X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/f5162efc3578d0420e869e3fcbda46454a855909..15ff8739b8ae8c89976a315da0cdfcdc2e302aa5:/services/keep-balance/block_state_test.go diff --git a/services/keep-balance/block_state_test.go b/services/keep-balance/block_state_test.go index aaf2c18e29..c6076bbd3d 100644 --- a/services/keep-balance/block_state_test.go +++ b/services/keep-balance/block_state_test.go @@ -2,9 +2,10 @@ // // SPDX-License-Identifier: AGPL-3.0 -package main +package keepbalance import ( + "sync" "time" "git.arvados.org/arvados.git/sdk/go/arvados" @@ -92,3 +93,25 @@ func (s *confirmedReplicationSuite) TestBlocksOnMultipleMounts(c *check.C) { n = s.blockStateMap.GetConfirmedReplication([]arvados.SizedDigest{knownBlkid(40), knownBlkid(41)}, nil) c.Check(n, check.Equals, 4) } + +func (s *confirmedReplicationSuite) TestConcurrency(c *check.C) { + var wg sync.WaitGroup + for i := 1000; i < 1256; i++ { + i := i + wg.Add(1) + go func() { + defer wg.Done() + n := s.blockStateMap.GetConfirmedReplication([]arvados.SizedDigest{knownBlkid(i), knownBlkid(i)}, []string{"default"}) + c.Check(n, check.Equals, 0) + }() + wg.Add(1) + go func() { + defer wg.Done() + n := s.blockStateMap.GetConfirmedReplication([]arvados.SizedDigest{knownBlkid(10)}, []string{"default"}) + c.Check(n, check.Equals, 1) + n = s.blockStateMap.GetConfirmedReplication([]arvados.SizedDigest{knownBlkid(20)}, []string{"default"}) + c.Check(n, check.Equals, 2) + }() + } + wg.Wait() +}