Skip to content

Concurrency tester#6

Open
nat-brown wants to merge 2 commits into
masterfrom
concurrent-tester
Open

Concurrency tester#6
nat-brown wants to merge 2 commits into
masterfrom
concurrent-tester

Conversation

@nat-brown

Copy link
Copy Markdown
Owner

This adds a test for simultaneous writes to and reads from the action counter. The solution to this was far trickier than the concurrent write only, as we can't use an external lock to test it without masking the lock underneath. The solution was to take advantage of the lock interface for the DataStore and use that to indicate when it's safe to collect data over a channel. Since the Counter was locked anyway, this just extends the time it sits "under" a lock, preserving behavior.

On my machine, this test averages 95,000 reads and writes respectively in the 1 second timeframe. When I remove the lock calls from Counter, this test triggered a warning from go test -race and failed its assertions. It triggered a warning from go test -race when I removed the read lock call from Counter as well, although I wasn't able to get it to fail. Such is the nature of race conditions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant