X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/8660244c570cecdb5b4c25a3809cfe01fafebada..380a54a7d97b34119cbaa3bee05d6b6cd241eee5:/services/keepstore/azure_blob_volume_test.go diff --git a/services/keepstore/azure_blob_volume_test.go b/services/keepstore/azure_blob_volume_test.go index 8a5ffde26e..8d02def144 100644 --- a/services/keepstore/azure_blob_volume_test.go +++ b/services/keepstore/azure_blob_volume_test.go @@ -27,6 +27,7 @@ import ( "testing" "time" + "git.curoverse.com/arvados.git/sdk/go/arvados" "github.com/Azure/azure-sdk-for-go/storage" "github.com/ghodss/yaml" "github.com/prometheus/client_golang/prometheus" @@ -65,8 +66,9 @@ type azBlob struct { type azStubHandler struct { sync.Mutex - blobs map[string]*azBlob - race chan chan struct{} + blobs map[string]*azBlob + race chan chan struct{} + didlist503 bool } func newAzStubHandler() *azStubHandler { @@ -281,6 +283,11 @@ func (h *azStubHandler) ServeHTTP(rw http.ResponseWriter, r *http.Request) { rw.WriteHeader(http.StatusAccepted) case r.Method == "GET" && r.Form.Get("comp") == "list" && r.Form.Get("restype") == "container": // "List Blobs" API + if !h.didlist503 { + h.didlist503 = true + rw.WriteHeader(http.StatusServiceUnavailable) + return + } prefix := container + "|" + r.Form.Get("prefix") marker := r.Form.Get("marker") @@ -388,14 +395,17 @@ func NewTestableAzureBlobVolume(t TB, readonly bool, replication int) *TestableA t.Fatal(err) } } + azClient.Sender = &singleSender{} bs := azClient.GetBlobService() v := &AzureBlobVolume{ - ContainerName: container, - ReadOnly: readonly, - AzureReplication: replication, - azClient: azClient, - container: &azureContainer{ctr: bs.GetContainerReference(container)}, + ContainerName: container, + ReadOnly: readonly, + AzureReplication: replication, + ListBlobsMaxAttempts: 2, + ListBlobsRetryDelay: arvados.Duration(time.Millisecond), + azClient: azClient, + container: &azureContainer{ctr: bs.GetContainerReference(container)}, } return &TestableAzureBlobVolume{ @@ -746,16 +756,18 @@ func (v *TestableAzureBlobVolume) Teardown() { v.azStub.Close() } -func (v *TestableAzureBlobVolume) GetMetricsVecs() (opsCounters, errCounters, ioBytes *prometheus.CounterVec) { - opsCounters = v.container.stats.opsCounters - errCounters = v.container.stats.errCounters - ioBytes = v.container.stats.ioBytes - return +func (v *TestableAzureBlobVolume) ReadWriteOperationLabelValues() (r, w string) { + return "get", "create" +} + +func (v *TestableAzureBlobVolume) DeviceID() string { + // Dummy device id for testing purposes + return "azure://azure_blob_volume_test" } func (v *TestableAzureBlobVolume) Start(vm *volumeMetricsVecs) error { // Override original Start() to be able to assign CounterVecs with a dummy DeviceID - v.container.stats.opsCounters, v.container.stats.errCounters, v.container.stats.ioBytes = vm.getCounterVecsFor(prometheus.Labels{"device_id": "azure_blob_volume_test"}) + v.container.stats.opsCounters, v.container.stats.errCounters, v.container.stats.ioBytes = vm.getCounterVecsFor(prometheus.Labels{"device_id": v.DeviceID()}) return nil }