func helperRandomString(l int) string {
	rv := ""
	for len(rv) < l {
		rv += uuid.NewRandom().String()[:4]
	}
	return rv[:l]
}
/*

Sets the stream annotations. An entry with a nil string implies delete
SetStreamAnnotations(ctx context.Context, uuid []byte, aver uint64, changes map[string]*string) bte.BTE

Get a stream annotations and tags
GetStreamInfo(ctx context.Context, uuid []byte) (res *LookupResult, err bte.BTE)

CreateStream makes a stream with the given uuid, collection and tags. Returns
an error if the uuid already exists.
CreateStream(ctx context.Context, uuid []byte, collection string, tags map[string]string, annotations map[string]string) bte.BTE

DeleteStream tombstones a stream
DeleteStream(ctx context.Context, uuid []byte) bte.BTE

ListCollections returns a list of collections beginning with prefix (which may be "")
and starting from the given string. If number is > 0, only that many results
will be returned. More can be obtained by re-calling ListCollections with
a given startingFrom and number.
ListCollections(ctx context.Context, prefix string, startingFrom string, number int64) ([]string, bte.BTE)

Return back all streams in all collections beginning with collection (or exactly equal if prefix is false)
provided they have the given tags and annotations, where a nil entry in the map means has the tag but the value is irrelevant
LookupStreams(ctx context.Context, collection string, isCollectionPrefix bool, tags map[string]*string, annotations map[string]*string) (chan *LookupResult, chan bte.BTE)
package mprovider
import (
	"bytes"
	"context"
	"fmt"
	"reflect"
	"sync"
	"testing"
	"time"
	"github.com/BTrDB/btrdb-server/bte"
	etcd "github.com/coreos/etcd/clientv3"
	"github.com/pborman/uuid"
)