Skip to content

Commit

Permalink
tests: fix intermittent test failures with NATS server
Browse files Browse the repository at this point in the history
The tests would fail intermittently locally and in the CI
because of the NATS server store directory being the same
across various packages. This sets up a temp store directory that
is cleaned up by the testing package for us.

--- FAIL: TestCreateReadUpdate (0.00s)
    nats_test.go:116:
        	Error Trace:	/home/runner/work/conditionorc/conditionorc/internal/store/nats_test.go:116
        	Error:      	Received unexpected error:
        	            	nats: error opening msg block file ["/tmp/nats/jetstream/$G/streams/KV_active-conditions/msgs/1.blk"]: open /tmp/nats/jetstream/$G/streams/KV_active-conditions/msgs/1.blk: no such file or directory
        	Test:       	TestCreateReadUpdate
--- FAIL: TestMultipleConditionUpdate (0.00s)
    --- FAIL: TestMultipleConditionUpdate/create_multiple_sanity_checks (0.00s)
        nats_test.go:175:
            	Error Trace:	/home/runner/work/conditionorc/conditionorc/internal/store/nats_test.go:175
            	Error:      	Received unexpected error:
            	            	nats: error opening msg block file ["/tmp/nats/jetstream/$G/streams/KV_active-conditions/msgs/1.blk"]: open /tmp/nats/jetstream/$G/streams/KV_active-conditions/msgs/1.blk: no such file or directory
  • Loading branch information
joelrebel committed Jun 27, 2024
1 parent 8d87e34 commit c9c2536
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 26 deletions.
23 changes: 10 additions & 13 deletions internal/orchestrator/updates_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,14 @@ func init() {
logrus.SetFormatter(&logrus.JSONFormatter{})
}

func startJetStreamServer() *server.Server {
func startJetStreamServer(t *testing.T) *server.Server {
t.Helper()

opts := srvtest.DefaultTestOptions
opts.Port = -1
opts.JetStream = true
opts.StoreDir = t.TempDir()

return srvtest.RunServer(&opts)
}

Expand All @@ -63,26 +67,19 @@ func jetStreamContext(s *server.Server) (*nats.Conn, nats.JetStreamContext) {
return nc, js
}

func shutdownJetStream(s *server.Server) {
var sd string
if config := s.JetStreamConfig(); config != nil {
sd = config.StoreDir
}
func shutdownJetStream(t *testing.T, s *server.Server) {
t.Helper()
s.Shutdown()
if sd != "" {
if err := os.RemoveAll(sd); err != nil {
logger.Fatalf("Unable to remove storage %q: %v", sd, err)
}
}
s.WaitForShutdown()
}

// let's pretend we're a conditioon-orchestrator app and do some one-time setup
func TestMain(m *testing.M) {
logger = logrus.New()

srv := startJetStreamServer()
defer shutdownJetStream(srv)
t := &testing.T{}
srv := startJetStreamServer(t)
defer shutdownJetStream(t, srv)
nc, js = jetStreamContext(srv) // nc is closed on evJS.Close(), js needs no cleanup
evJS = events.NewJetstreamFromConn(nc)
defer evJS.Close()
Expand Down
2 changes: 2 additions & 0 deletions internal/status/kv_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ func startJetStreamServer(t *testing.T) *server.Server {
opts := srvtest.DefaultTestOptions
opts.Port = -1
opts.JetStream = true
opts.StoreDir = t.TempDir()

return srvtest.RunServer(&opts)
}

Expand Down
23 changes: 10 additions & 13 deletions internal/store/nats_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,14 @@ func init() {
logrus.SetFormatter(&logrus.JSONFormatter{})
}

func startJetStreamServer() *server.Server {
func startJetStreamServer(t *testing.T) *server.Server {
t.Helper()

opts := srvtest.DefaultTestOptions
opts.Port = -1
opts.JetStream = true
opts.StoreDir = t.TempDir()

return srvtest.RunServer(&opts)
}

Expand All @@ -49,26 +53,19 @@ func jetStreamContext(s *server.Server) (*nats.Conn, nats.JetStreamContext) {
return nc, js
}

func shutdownJetStream(s *server.Server) {
var sd string
if config := s.JetStreamConfig(); config != nil {
sd = config.StoreDir
}
func shutdownJetStream(t *testing.T, s *server.Server) {
t.Helper()
s.Shutdown()
if sd != "" {
if err := os.RemoveAll(sd); err != nil {
logger.Fatalf("Unable to remove storage %q: %v", sd, err)
}
}
s.WaitForShutdown()
}

// do some one-time setup
func TestMain(m *testing.M) {
logger = logrus.New()

srv := startJetStreamServer()
defer shutdownJetStream(srv)
t := &testing.T{}
srv := startJetStreamServer(t)
defer shutdownJetStream(t, srv)
nc, js = jetStreamContext(srv) // nc is closed on evJS.Close(), js needs no cleanup
evJS = events.NewJetstreamFromConn(nc)
defer evJS.Close()
Expand Down

0 comments on commit c9c2536

Please sign in to comment.