You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: gun.go
    path of file: ./repos/chainlink/integration-tests/load/vrfv2
    
    the code of the file until where you have to start completion: package loadvrfv2

import (
	"math/rand"

	"github.com/rs/zerolog"
	"github.com/smartcontractkit/wasp"

	vrfcommon "github.com/smartcontractkit/chainlink/integration-tests/actions/vrf/common"
	"github.com/smartcontractkit/chainlink/integration-tests/actions/vrf/vrfv2"
	"github.com/smartcontractkit/chainlink/integration-tests/types"
)

/* SingleHashGun is a gun that constantly requests randomness for one feed  */

type SingleHashGun struct {
	contracts  *vrfcommon.VRFContracts
	keyHash    [32]byte
	subIDs     []uint64
	testConfig types.VRFv2TestConfig
	logger  
    
func (m *SingleHashGun) Call(_ *wasp.Generator) *wasp.Response {
	//todo - should work with multiple consumers and consumers having different keyhashes and wallets

	vrfv2Config := m.testConfig.GetVRFv2Config().General
	//randomly increase/decrease randomness request count per TX
	randomnessRequestCountPerRequest := deviateValue(*vrfv2Config.RandomnessRequestCountPerRequest, *vrfv2Config.RandomnessRequestCountPerRequestDeviation)
	_, err := vrfv2.RequestRandomnessAndWaitForFulfillment(
		m.logger,
		//the same consumer is used for all requests and in all subs
		m.contracts.VRFV2Consumer[0],
		m.contracts.CoordinatorV2,
		//randomly pick a subID from pool of subIDs
		m.subIDs[randInRange(0, len(m.subIDs)-1)],
		&vrfcommon.VRFKeyData{KeyHash: m.keyHash},
		*vrfv2Config.MinimumConfirmations,
		*vrfv2Config.CallbackGasLimit,
		*vrfv2Config.NumberOfWords,
		randomnessRequestCountPerRequest,
		*vrfv2Config.RandomnessRequestCountPerRequestDeviation,
		vrfv2Config.RandomWordsFulfilledEventTimeout.Duration,
	)
	if err != nil {
		return &wasp.Response{Error: err.Error(), Failed: true}
	}
	return &wasp.Response{}
}