X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/16b445f3d52952d284dbaac603e70a7196d9a3e9..04704ea80b294655fe14d0c8cddf4ec1a6b21b4d:/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 8a58be288f..c6076bbd3d 100644 --- a/services/keep-balance/block_state_test.go +++ b/services/keep-balance/block_state_test.go @@ -5,6 +5,7 @@ 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() +}