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: amqp_concurrence_test.go
    path of file: ./repos/machinery/v1/brokers/amqp
    
    the code of the file until where you have to start completion: package amqp

import (
	"fmt"
	"github.com/RichardKnop/machinery/v1/brokers/iface"
	"github.com/RichardKnop/machinery/v1/config"
	"github.com/RichardKnop/machinery/v1/tasks"
	amqp "github.com/rabbitmq/amqp091-go"
	"testing"
	"time"
)

type doNothingProcessor struct{}

func (_ doNothingProcessor) Process(signature *tasks.Signature) error {
	return fmt.Errorf("failed")
}

func (_ doNothingProcessor) CustomQueue() stri
    
func TestConsume(t *testing.T) {
	var (
		iBroker    iface.Broker
		deliveries = make(chan amqp.Delivery, 3)
		closeChan  chan *amqp.Error
		processor  doNothingProcessor
	)

	t.Run("with deliveries more than the number of concurrency", func(t *testing.T) {
		iBroker = New(&config.Config{})
		broker, _ := iBroker.(*Broker)
		errChan := make(chan error)

		// simulate that there are too much deliveries
		go func() {
			for i := 0; i < 3; i++ {
				deliveries <- amqp.Delivery{} // broker.consumeOne() will complain this error: Received an empty message
			}
		}()

		go func() {
			err := broker.consume(deliveries, 2, processor, closeChan)
			if err != nil {
				errChan <- err
			}
		}()

		select {
		case <-errChan:
		case <-time.After(1 * time.Second):
			t.Error("Maybe deadlock")
		}
	})
}