From 4f01edb9230f58ff84b0dd892c931ec8ac9aad55 Mon Sep 17 00:00:00 2001 From: Brian Picciano Date: Tue, 13 Sep 2022 12:56:08 +0200 Subject: move src out of srv, clean up default.nix and Makefile --- src/pow/store_test.go | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/pow/store_test.go (limited to 'src/pow/store_test.go') diff --git a/src/pow/store_test.go b/src/pow/store_test.go new file mode 100644 index 0000000..324a40c --- /dev/null +++ b/src/pow/store_test.go @@ -0,0 +1,52 @@ +package pow + +import ( + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/tilinna/clock" +) + +func TestStore(t *testing.T) { + clock := clock.NewMock(time.Now().Truncate(time.Hour)) + now := clock.Now() + + s := NewMemoryStore(clock) + defer s.Close() + + seed := []byte{0} + + // mark solved should work + err := s.MarkSolved(seed, now.Add(time.Second)) + assert.NoError(t, err) + + // mark again, should not work + err = s.MarkSolved(seed, now.Add(time.Hour)) + assert.ErrorIs(t, err, ErrSeedSolved) + + // marking a different seed should still work + seed2 := []byte{1} + err = s.MarkSolved(seed2, now.Add(inMemStoreGCPeriod*2)) + assert.NoError(t, err) + err = s.MarkSolved(seed2, now.Add(time.Hour)) + assert.ErrorIs(t, err, ErrSeedSolved) + + now = clock.Add(inMemStoreGCPeriod) + <-s.(*inMemStore).spinLoopCh + + // first one should be markable again, second shouldnt + err = s.MarkSolved(seed, now.Add(time.Second)) + assert.NoError(t, err) + err = s.MarkSolved(seed2, now.Add(time.Hour)) + assert.ErrorIs(t, err, ErrSeedSolved) + + now = clock.Add(inMemStoreGCPeriod) + <-s.(*inMemStore).spinLoopCh + + // now both should be expired + err = s.MarkSolved(seed, now.Add(time.Second)) + assert.NoError(t, err) + err = s.MarkSolved(seed2, now.Add(time.Second)) + assert.NoError(t, err) +} -- cgit v1.2.3