From f8a030bc4a68bc5639f0769c75ed94200966ff35 Mon Sep 17 00:00:00 2001 From: Marco Primi Date: Thu, 8 Dec 2022 11:16:45 -0800 Subject: [PATCH] Use testing.TempDir() where possible Refactor tests to use go built-in temporary directory utility for tests. Also avoid binding to default port (which may be in use) --- logger/log_test.go | 33 +- server/accounts_test.go | 50 +- server/client_test.go | 1 - server/config_check_test.go | 1 - server/dirstore_test.go | 44 +- server/events_test.go | 8 +- server/filestore_test.go | 228 ++-- server/gateway_test.go | 7 +- server/jetstream_benchmark_consume_test.go | 2 +- server/jetstream_benchmark_kv_test.go | 2 +- server/jetstream_benchmark_publish_test.go | 2 +- server/jetstream_cluster_1_test.go | 4 - server/jetstream_cluster_2_test.go | 48 +- server/jetstream_cluster_3_test.go | 22 +- server/jetstream_helpers_test.go | 16 +- server/jetstream_jwt_test.go | 37 +- server/jetstream_leafnode_test.go | 86 +- server/jetstream_super_cluster_test.go | 6 +- server/jetstream_test.go | 1239 ++++---------------- server/jwt_test.go | 232 +--- server/leafnode_test.go | 126 +- server/log_test.go | 9 +- server/monitor_test.go | 13 +- server/mqtt_test.go | 19 +- server/nkey_test.go | 1 - server/norace_test.go | 125 +- server/opts_test.go | 73 +- server/reload_test.go | 86 +- server/routes_test.go | 5 +- server/server_test.go | 12 +- server/signal_test.go | 5 +- server/trust_test.go | 3 - server/websocket_test.go | 3 - test/accounts_cycles_test.go | 13 - test/client_auth_test.go | 7 +- test/cluster_test.go | 6 - test/gateway_test.go | 2 - test/leafnode_test.go | 94 +- test/new_routes_test.go | 2 - test/norace_test.go | 1 - test/ocsp_test.go | 65 +- test/operator_test.go | 6 - test/pid_test.go | 5 +- test/ports_test.go | 6 +- test/routes_test.go | 4 +- test/service_latency_test.go | 16 +- test/services_test.go | 8 - test/test.go | 43 +- test/tls_test.go | 10 - 49 files changed, 599 insertions(+), 2237 deletions(-) diff --git a/logger/log_test.go b/logger/log_test.go index e289e19a..a8d13f39 100644 --- a/logger/log_test.go +++ b/logger/log_test.go @@ -25,8 +25,6 @@ import ( "testing" ) -var tempRoot = filepath.Join(os.TempDir(), "nats-server") - func TestStdLogger(t *testing.T) { logger := NewStdLogger(false, false, false, false, false) @@ -104,9 +102,7 @@ func TestStdLoggerTraceWithOutDebug(t *testing.T) { } func TestFileLogger(t *testing.T) { - tmpDir := createDir(t, "_nats-server") - defer removeDir(t, tmpDir) - + tmpDir := t.TempDir() file := createFileAtDir(t, tmpDir, "nats-server:log_") file.Close() @@ -176,8 +172,7 @@ func TestFileLoggerSizeLimit(t *testing.T) { } logger.Close() - tmpDir := createDir(t, "nats-server") - defer removeDir(t, tmpDir) + tmpDir := t.TempDir() file := createFileAtDir(t, tmpDir, "log_") file.Close() @@ -210,10 +205,7 @@ func TestFileLoggerSizeLimit(t *testing.T) { t.Fatalf("Should be statement about rotated log and backup name, got %s", content) } - // Remove all files - removeDir(t, tmpDir) - tmpDir = createDir(t, "nats-server") - defer removeDir(t, tmpDir) + tmpDir = t.TempDir() // Recreate logger and don't set a limit file = createFileAtDir(t, tmpDir, "log_") @@ -325,18 +317,6 @@ func expectOutput(t *testing.T, f func(), expected string) { } } -func createDir(t *testing.T, prefix string) string { - t.Helper() - if err := os.MkdirAll(tempRoot, 0700); err != nil { - t.Fatal(err) - } - dir, err := os.MkdirTemp(tempRoot, prefix) - if err != nil { - t.Fatal(err) - } - return dir -} - func createFileAtDir(t *testing.T, dir, prefix string) *os.File { t.Helper() f, err := os.CreateTemp(dir, prefix) @@ -345,10 +325,3 @@ func createFileAtDir(t *testing.T, dir, prefix string) *os.File { } return f } - -func removeDir(t *testing.T, dir string) { - t.Helper() - if err := os.RemoveAll(dir); err != nil { - t.Fatal(err) - } -} diff --git a/server/accounts_test.go b/server/accounts_test.go index 0d6921b1..26351409 100644 --- a/server/accounts_test.go +++ b/server/accounts_test.go @@ -337,7 +337,6 @@ func TestAccountIsolationExportImport(t *testing.T) { `, c.exp, c.imp, ))) - defer removeFile(t, cf) s, _ := RunServerWithConfig(cf) defer s.Shutdown() @@ -381,7 +380,6 @@ func TestMultiAccountsIsolation(t *testing.T) { ] } }`)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) if config := s.JetStreamConfig(); config != nil { @@ -472,7 +470,6 @@ func TestNewAccountAndRequireNewAlwaysError(t *testing.T) { B: { users: [ {user: ub, password: pb} ] }, } `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -536,8 +533,11 @@ func accountNameExists(name string, accounts []*Account) bool { } func TestAccountSimpleConfig(t *testing.T) { - confFileName := createConfFile(t, []byte(`accounts = [foo, bar]`)) - defer removeFile(t, confFileName) + cfg1 := ` + accounts = [foo, bar] + ` + + confFileName := createConfFile(t, []byte(cfg1)) opts, err := ProcessConfigFile(confFileName) if err != nil { t.Fatalf("Received an error processing config file: %v", err) @@ -552,9 +552,12 @@ func TestAccountSimpleConfig(t *testing.T) { t.Fatal("Expected a 'bar' account") } + cfg2 := ` + accounts = [foo, foo] + ` + // Make sure double entries is an error. - confFileName = createConfFile(t, []byte(`accounts = [foo, foo]`)) - defer removeFile(t, confFileName) + confFileName = createConfFile(t, []byte(cfg2)) _, err = ProcessConfigFile(confFileName) if err == nil { t.Fatalf("Expected an error with double account entries") @@ -578,7 +581,6 @@ func TestAccountParseConfig(t *testing.T) { } } `)) - defer removeFile(t, confFileName) opts, err := ProcessConfigFile(confFileName) if err != nil { t.Fatalf("Received an error processing config file: %v", err) @@ -628,7 +630,6 @@ func TestAccountParseConfigDuplicateUsers(t *testing.T) { } } `)) - defer removeFile(t, confFileName) _, err := ProcessConfigFile(confFileName) if err == nil { t.Fatalf("Expected an error with double user entries") @@ -736,7 +737,6 @@ func TestImportExportConfigFailures(t *testing.T) { } } `)) - defer removeFile(t, cf) if _, err := ProcessConfigFile(cf); err == nil { t.Fatalf("Expected an error with import from unknown account") } @@ -748,7 +748,6 @@ func TestImportExportConfigFailures(t *testing.T) { } } `)) - defer removeFile(t, cf) if _, err := ProcessConfigFile(cf); err == nil { t.Fatalf("Expected an error with import of a service with no account") } @@ -760,7 +759,6 @@ func TestImportExportConfigFailures(t *testing.T) { } } `)) - defer removeFile(t, cf) if _, err := ProcessConfigFile(cf); err == nil { t.Fatalf("Expected an error with import of a service with wildcard subject") } @@ -772,7 +770,6 @@ func TestImportExportConfigFailures(t *testing.T) { } } `)) - defer removeFile(t, cf) if _, err := ProcessConfigFile(cf); err == nil { t.Fatalf("Expected an error with export with unknown keyword") } @@ -784,7 +781,6 @@ func TestImportExportConfigFailures(t *testing.T) { } } `)) - defer removeFile(t, cf) if _, err := ProcessConfigFile(cf); err == nil { t.Fatalf("Expected an error with import with unknown keyword") } @@ -796,7 +792,6 @@ func TestImportExportConfigFailures(t *testing.T) { } } `)) - defer removeFile(t, cf) if _, err := ProcessConfigFile(cf); err == nil { t.Fatalf("Expected an error with export with account") } @@ -1024,7 +1019,6 @@ func TestStreamImportLengthBug(t *testing.T) { } } `)) - defer removeFile(t, cf) if _, err := ProcessConfigFile(cf); err == nil { t.Fatalf("Expected an error with import with wildcard prefix") } @@ -2196,7 +2190,6 @@ func TestAccountMapsUsers(t *testing.T) { } } `)) - defer removeFile(t, confFileName) opts, err := ProcessConfigFile(confFileName) if err != nil { t.Fatalf("Unexpected error parsing config file: %v", err) @@ -2306,7 +2299,6 @@ func TestAccountGlobalDefault(t *testing.T) { // Make sure we can not define one in a config file either. confFileName := createConfFile(t, []byte(`accounts { $G {} }`)) - defer removeFile(t, confFileName) if _, err := ProcessConfigFile(confFileName); err == nil { t.Fatalf("Expected an error parsing config file with reserved account") @@ -2834,13 +2826,13 @@ func TestAccountMultiWeightedRouteMappings(t *testing.T) { func TestGlobalAccountRouteMappingsConfiguration(t *testing.T) { cf := createConfFile(t, []byte(` + port: -1 mappings = { foo: bar foo.*: [ { dest: bar.v1.$1, weight: 40% }, { destination: baz.v2.$1, weight: 20 } ] bar.*.*: RAB.$2.$1 } `)) - defer removeFile(t, cf) s, _ := RunServerWithConfig(cf) defer s.Shutdown() @@ -2884,6 +2876,7 @@ func TestGlobalAccountRouteMappingsConfiguration(t *testing.T) { func TestAccountRouteMappingsConfiguration(t *testing.T) { cf := createConfFile(t, []byte(` + port: -1 accounts { synadia { users = [{user: derek, password: foo}] @@ -2895,7 +2888,6 @@ func TestAccountRouteMappingsConfiguration(t *testing.T) { } } `)) - defer removeFile(t, cf) s, _ := RunServerWithConfig(cf) defer s.Shutdown() @@ -2920,12 +2912,12 @@ func TestAccountRouteMappingsConfiguration(t *testing.T) { func TestAccountRouteMappingsWithLossInjection(t *testing.T) { cf := createConfFile(t, []byte(` + port: -1 mappings = { foo: { dest: foo, weight: 80% } bar: { dest: bar, weight: 0% } } `)) - defer removeFile(t, cf) s, _ := RunServerWithConfig(cf) defer s.Shutdown() @@ -2958,11 +2950,11 @@ func TestAccountRouteMappingsWithLossInjection(t *testing.T) { func TestAccountRouteMappingsWithOriginClusterFilter(t *testing.T) { cf := createConfFile(t, []byte(` + port: -1 mappings = { foo: { dest: bar, cluster: SYN, weight: 100% } } `)) - defer removeFile(t, cf) s, _ := RunServerWithConfig(cf) defer s.Shutdown() @@ -2996,6 +2988,7 @@ func TestAccountRouteMappingsWithOriginClusterFilter(t *testing.T) { func TestAccountServiceImportWithRouteMappings(t *testing.T) { cf := createConfFile(t, []byte(` + port: -1 accounts { foo { users = [{user: derek, password: foo}] @@ -3007,7 +3000,6 @@ func TestAccountServiceImportWithRouteMappings(t *testing.T) { } } `)) - defer removeFile(t, cf) s, opts := RunServerWithConfig(cf) defer s.Shutdown() @@ -3039,6 +3031,7 @@ func TestAccountServiceImportWithRouteMappings(t *testing.T) { func TestAccountImportsWithWildcardSupport(t *testing.T) { cf := createConfFile(t, []byte(` + port: -1 accounts { foo { users = [{user: derek, password: foo}] @@ -3058,7 +3051,6 @@ func TestAccountImportsWithWildcardSupport(t *testing.T) { } } `)) - defer removeFile(t, cf) s, opts := RunServerWithConfig(cf) defer s.Shutdown() @@ -3134,6 +3126,7 @@ func TestAccountImportsWithWildcardSupport(t *testing.T) { // duplicates TestJWTAccountImportsWithWildcardSupport (jwt_test.go) in config func TestAccountImportsWithWildcardSupportStreamAndService(t *testing.T) { cf := createConfFile(t, []byte(` + port: -1 accounts { foo { users = [{user: derek, password: foo}] @@ -3151,7 +3144,6 @@ func TestAccountImportsWithWildcardSupportStreamAndService(t *testing.T) { } } `)) - defer removeFile(t, cf) s, opts := RunServerWithConfig(cf) defer s.Shutdown() @@ -3346,7 +3338,6 @@ func TestAccountSystemPermsWithGlobalAccess(t *testing.T) { $SYS { users = [ { user: "admin", pass: "s3cr3t!" } ] } } `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -3389,7 +3380,6 @@ accounts: { func TestImportSubscriptionPartialOverlapWithPrefix(t *testing.T) { cf := createConfFile(t, []byte(fmt.Sprintf(importSubscriptionOverlapTemplate, ">", ">", "prefix: myprefix"))) - defer removeFile(t, cf) s, opts := RunServerWithConfig(cf) defer s.Shutdown() @@ -3418,7 +3408,6 @@ func TestImportSubscriptionPartialOverlapWithPrefix(t *testing.T) { func TestImportSubscriptionPartialOverlapWithTransform(t *testing.T) { cf := createConfFile(t, []byte(fmt.Sprintf(importSubscriptionOverlapTemplate, "*.*.>", "*.*.>", "to: myprefix.$2.$1.>"))) - defer removeFile(t, cf) s, opts := RunServerWithConfig(cf) defer s.Shutdown() @@ -3451,6 +3440,7 @@ func TestImportSubscriptionPartialOverlapWithTransform(t *testing.T) { func TestAccountLimitsServerConfig(t *testing.T) { cf := createConfFile(t, []byte(` + port: -1 max_connections: 10 accounts { MAXC { @@ -3464,7 +3454,6 @@ func TestAccountLimitsServerConfig(t *testing.T) { } } `)) - defer removeFile(t, cf) s, _ := RunServerWithConfig(cf) defer s.Shutdown() @@ -3506,7 +3495,6 @@ func TestAccountUserSubPermsWithQueueGroups(t *testing.T) { } ]} `)) - defer removeFile(t, cf) s, _ := RunServerWithConfig(cf) defer s.Shutdown() @@ -3554,7 +3542,6 @@ func TestAccountImportCycle(t *testing.T) { } ` cf := createConfFile(t, []byte(fmt.Sprintf(tmpl, _EMPTY_, _EMPTY_))) - defer removeFile(t, cf) s, _ := RunServerWithConfig(cf) defer s.Shutdown() ncCp, err := nats.Connect(s.ClientURL(), nats.UserInfo("cp", "cp")) @@ -3606,7 +3593,6 @@ func TestAccountImportOwnExport(t *testing.T) { } } `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() diff --git a/server/client_test.go b/server/client_test.go index 60c43a23..b578db81 100644 --- a/server/client_test.go +++ b/server/client_test.go @@ -2592,7 +2592,6 @@ func TestClientAuthRequiredNoAuthUser(t *testing.T) { } no_auth_user: user `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() diff --git a/server/config_check_test.go b/server/config_check_test.go index dd476c63..0ba2c77f 100644 --- a/server/config_check_test.go +++ b/server/config_check_test.go @@ -1602,7 +1602,6 @@ func TestConfigCheck(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { conf := createConfFile(t, []byte(test.config)) - defer removeFile(t, conf) err := checkConfig(conf) var expectedErr error diff --git a/server/dirstore_test.go b/server/dirstore_test.go index 2e7a1a6c..1bb77ef5 100644 --- a/server/dirstore_test.go +++ b/server/dirstore_test.go @@ -65,7 +65,7 @@ func init() { func TestShardedDirStoreWriteAndReadonly(t *testing.T) { t.Parallel() - dir := createDir(t, "jwtstore_test") + dir := t.TempDir() store, err := NewDirJWTStore(dir, true, false) require_NoError(t, err) @@ -118,7 +118,7 @@ func TestShardedDirStoreWriteAndReadonly(t *testing.T) { func TestUnshardedDirStoreWriteAndReadonly(t *testing.T) { t.Parallel() - dir := createDir(t, "jwtstore_test") + dir := t.TempDir() store, err := NewDirJWTStore(dir, false, false) require_NoError(t, err) @@ -179,7 +179,7 @@ func TestNoCreateRequiresDir(t *testing.T) { func TestCreateMakesDir(t *testing.T) { t.Parallel() - dir := createDir(t, "jwtstore_test") + dir := t.TempDir() fullPath := filepath.Join(dir, "a/b") @@ -197,9 +197,9 @@ func TestCreateMakesDir(t *testing.T) { func TestShardedDirStorePackMerge(t *testing.T) { t.Parallel() - dir := createDir(t, "jwtstore_test") - dir2 := createDir(t, "jwtstore_test") - dir3 := createDir(t, "jwtstore_test") + dir := t.TempDir() + dir2 := t.TempDir() + dir3 := t.TempDir() store, err := NewDirJWTStore(dir, true, false) require_NoError(t, err) @@ -272,8 +272,8 @@ func TestShardedDirStorePackMerge(t *testing.T) { func TestShardedToUnsharedDirStorePackMerge(t *testing.T) { t.Parallel() - dir := createDir(t, "jwtstore_test") - dir2 := createDir(t, "jwtstore_test") + dir := t.TempDir() + dir2 := t.TempDir() store, err := NewDirJWTStore(dir, true, false) require_NoError(t, err) @@ -331,7 +331,7 @@ func TestShardedToUnsharedDirStorePackMerge(t *testing.T) { func TestMergeOnlyOnNewer(t *testing.T) { t.Parallel() - dir := createDir(t, "jwtstore_test") + dir := t.TempDir() dirStore, err := NewDirJWTStore(dir, true, false) require_NoError(t, err) @@ -404,7 +404,7 @@ func assertStoreSize(t *testing.T, dirStore *DirJWTStore, length int) { func TestExpiration(t *testing.T) { t.Parallel() - dir := createDir(t, "jwtstore_test") + dir := t.TempDir() dirStore, err := NewExpiringDirJWTStore(dir, false, false, NoDelete, time.Millisecond*50, 10, true, 0, nil) require_NoError(t, err) @@ -441,7 +441,7 @@ func TestExpiration(t *testing.T) { func TestLimit(t *testing.T) { t.Parallel() - dir := createDir(t, "jwtstore_test") + dir := t.TempDir() dirStore, err := NewExpiringDirJWTStore(dir, false, false, NoDelete, time.Millisecond*100, 5, true, 0, nil) require_NoError(t, err) @@ -483,7 +483,7 @@ func TestLimit(t *testing.T) { func TestLimitNoEvict(t *testing.T) { t.Parallel() - dir := createDir(t, "jwtstore_test") + dir := t.TempDir() dirStore, err := NewExpiringDirJWTStore(dir, false, false, NoDelete, time.Millisecond*50, 2, false, 0, nil) require_NoError(t, err) @@ -535,7 +535,7 @@ func TestLimitNoEvict(t *testing.T) { func TestLruLoad(t *testing.T) { t.Parallel() - dir := createDir(t, "jwtstore_test") + dir := t.TempDir() dirStore, err := NewExpiringDirJWTStore(dir, false, false, NoDelete, time.Millisecond*100, 2, true, 0, nil) require_NoError(t, err) defer dirStore.Close() @@ -567,7 +567,7 @@ func TestLruLoad(t *testing.T) { func TestLruVolume(t *testing.T) { t.Parallel() - dir := createDir(t, "jwtstore_test") + dir := t.TempDir() dirStore, err := NewExpiringDirJWTStore(dir, false, false, NoDelete, time.Millisecond*50, 2, true, 0, nil) require_NoError(t, err) @@ -609,7 +609,7 @@ func TestLruVolume(t *testing.T) { func TestLru(t *testing.T) { t.Parallel() - dir := createDir(t, "jwtstore_test") + dir := t.TempDir() dirStore, err := NewExpiringDirJWTStore(dir, false, false, NoDelete, time.Millisecond*50, 2, true, 0, nil) require_NoError(t, err) @@ -658,7 +658,7 @@ func TestLru(t *testing.T) { func TestReload(t *testing.T) { t.Parallel() - dir := createDir(t, "jwtstore_test") + dir := t.TempDir() notificationChan := make(chan struct{}, 5) dirStore, err := NewExpiringDirJWTStore(dir, false, false, NoDelete, time.Millisecond*100, 2, true, 0, func(publicKey string) { notificationChan <- struct{}{} @@ -719,7 +719,7 @@ func TestReload(t *testing.T) { func TestExpirationUpdate(t *testing.T) { t.Parallel() - dir := createDir(t, "jwtstore_test") + dir := t.TempDir() dirStore, err := NewExpiringDirJWTStore(dir, false, false, NoDelete, time.Millisecond*50, 10, true, 0, nil) require_NoError(t, err) @@ -777,7 +777,7 @@ func TestExpirationUpdate(t *testing.T) { func TestTTL(t *testing.T) { t.Parallel() - dir := createDir(t, "jwtstore_test") + dir := t.TempDir() require_OneJWT := func() { t.Helper() f, err := os.ReadDir(dir) @@ -840,7 +840,7 @@ func TestRemove(t *testing.T) { } { t.Run("", func(t *testing.T) { t.Parallel() - dir := createDir(t, "jwtstore_test") + dir := t.TempDir() require_OneJWT := func() { t.Helper() f, err := os.ReadDir(dir) @@ -893,7 +893,7 @@ func TestNotificationOnPack(t *testing.T) { } notificationChan <- struct{}{} } - dirPack := createDir(t, "jwtstore_test") + dirPack := t.TempDir() packStore, err := NewExpiringDirJWTStore(dirPack, false, false, NoDelete, infDur, 0, true, 0, notification) require_NoError(t, err) // prefill the store with data @@ -908,7 +908,7 @@ func TestNotificationOnPack(t *testing.T) { packStore.Close() hash := packStore.Hash() for _, shard := range []bool{true, false, true, false} { - dirMerge := createDir(t, "jwtstore_test") + dirMerge := t.TempDir() mergeStore, err := NewExpiringDirJWTStore(dirMerge, shard, false, NoDelete, infDur, 0, true, 0, notification) require_NoError(t, err) // set @@ -948,7 +948,7 @@ func TestNotificationOnPackWalk(t *testing.T) { const iterCnt = 8 store := [storeCnt]*DirJWTStore{} for i := 0; i < storeCnt; i++ { - dirMerge := createDir(t, "jwtstore_test") + dirMerge := t.TempDir() mergeStore, err := NewExpiringDirJWTStore(dirMerge, true, false, NoDelete, infDur, 0, true, 0, nil) require_NoError(t, err) store[i] = mergeStore diff --git a/server/events_test.go b/server/events_test.go index f78cdaa3..70745e3f 100644 --- a/server/events_test.go +++ b/server/events_test.go @@ -473,11 +473,9 @@ func TestSystemAccountingWithLeafNodes(t *testing.T) { } seed, _ := kp.Seed() mycreds := genCredsFile(t, ujwt, seed) - defer removeFile(t, mycreds) // Create a server that solicits a leafnode connection. - sl, slopts, lnconf := runSolicitWithCredentials(t, opts, mycreds) - defer removeFile(t, lnconf) + sl, slopts, _ := runSolicitWithCredentials(t, opts, mycreds) defer sl.Shutdown() checkLeafNodeConnected(t, s) @@ -1169,7 +1167,6 @@ func TestSystemAccountFromConfig(t *testing.T) { ` conf := createConfFile(t, []byte(fmt.Sprintf(confTemplate, opub, apub, ts.URL))) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -1790,7 +1787,6 @@ func TestServerAccountConns(t *testing.T) { SYS: {users: [{user: s, password: s}]} ACC: {users: [{user: a, password: a}]} }`)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -2412,7 +2408,6 @@ func TestServerEventsFilteredByTag(t *testing.T) { } no_auth_user: b `)) - defer removeFile(t, confA) sA, _ := RunServerWithConfig(confA) defer sA.Shutdown() confB := createConfFile(t, []byte(fmt.Sprintf(` @@ -2437,7 +2432,6 @@ func TestServerEventsFilteredByTag(t *testing.T) { } no_auth_user: b `, sA.opts.Cluster.Port))) - defer removeFile(t, confB) sB, _ := RunServerWithConfig(confB) defer sB.Shutdown() checkClusterFormed(t, sA, sB) diff --git a/server/filestore_test.go b/server/filestore_test.go index c26d8f67..89ed90e1 100644 --- a/server/filestore_test.go +++ b/server/filestore_test.go @@ -38,8 +38,7 @@ import ( ) func TestFileStoreBasics(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -107,8 +106,7 @@ func TestFileStoreBasics(t *testing.T) { } func TestFileStoreMsgHeaders(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -139,8 +137,7 @@ func TestFileStoreMsgHeaders(t *testing.T) { } func TestFileStoreBasicWriteMsgsAndRestore(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fcfg := FileStoreConfig{StoreDir: storeDir} @@ -272,8 +269,7 @@ func TestFileStoreBasicWriteMsgsAndRestore(t *testing.T) { } func TestFileStoreSelectNextFirst(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir, BlockSize: 256}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -311,8 +307,7 @@ func TestFileStoreSelectNextFirst(t *testing.T) { } func TestFileStoreSkipMsg(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir, BlockSize: 256}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -400,8 +395,7 @@ func TestFileStoreSkipMsg(t *testing.T) { } func TestFileStoreWriteExpireWrite(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() cexp := 10 * time.Millisecond fs, err := newFileStore( @@ -465,8 +459,7 @@ func TestFileStoreWriteExpireWrite(t *testing.T) { } func TestFileStoreMsgLimit(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, StreamConfig{Name: "zzz", Storage: FileStorage, MaxMsgs: 10}) if err != nil { @@ -502,8 +495,7 @@ func TestFileStoreMsgLimit(t *testing.T) { } func TestFileStoreMsgLimitBug(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, StreamConfig{Name: "zzz", Storage: FileStorage, MaxMsgs: 1}) if err != nil { @@ -531,8 +523,7 @@ func TestFileStoreBytesLimit(t *testing.T) { toStore := uint64(1024) maxBytes := storedMsgSize * toStore - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, StreamConfig{Name: "zzz", Storage: FileStorage, MaxBytes: int64(maxBytes)}) if err != nil { @@ -575,8 +566,7 @@ func TestFileStoreBytesLimit(t *testing.T) { func TestFileStoreAgeLimit(t *testing.T) { maxAge := 250 * time.Millisecond - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir, BlockSize: 256}, @@ -636,8 +626,7 @@ func TestFileStoreAgeLimit(t *testing.T) { } func TestFileStoreTimeStamps(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -666,8 +655,7 @@ func TestFileStoreTimeStamps(t *testing.T) { } func TestFileStorePurge(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() blkSize := uint64(64 * 1024) fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir, BlockSize: blkSize}, StreamConfig{Name: "zzz", Storage: FileStorage}) @@ -783,8 +771,7 @@ func TestFileStorePurge(t *testing.T) { } func TestFileStoreCompact(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() prf := func(context []byte) ([]byte, error) { h := hmac.New(sha256.New, []byte("dlc22")) @@ -856,8 +843,7 @@ func TestFileStoreCompact(t *testing.T) { } func TestFileStoreCompactLastPlusOne(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir, BlockSize: 8192, AsyncFlush: false}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -890,8 +876,7 @@ func TestFileStoreCompactLastPlusOne(t *testing.T) { } func TestFileStoreCompactMsgCountBug(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -932,8 +917,7 @@ func TestFileStoreCompactMsgCountBug(t *testing.T) { func TestFileStoreCompactPerf(t *testing.T) { t.SkipNow() - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir, BlockSize: 8192, AsyncFlush: true}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -968,8 +952,7 @@ func TestFileStoreCompactPerf(t *testing.T) { } func TestFileStoreStreamTruncate(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() prf := func(context []byte) ([]byte, error) { h := hmac.New(sha256.New, []byte("dlc22")) @@ -1057,8 +1040,7 @@ func TestFileStoreStreamTruncate(t *testing.T) { } func TestFileStoreRemovePartialRecovery(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir}, @@ -1108,8 +1090,7 @@ func TestFileStoreRemovePartialRecovery(t *testing.T) { } func TestFileStoreRemoveOutOfOrderRecovery(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir}, @@ -1182,8 +1163,7 @@ func TestFileStoreRemoveOutOfOrderRecovery(t *testing.T) { func TestFileStoreAgeLimitRecovery(t *testing.T) { maxAge := 10 * time.Millisecond - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir, CacheExpire: 1 * time.Millisecond}, @@ -1227,8 +1207,7 @@ func TestFileStoreAgeLimitRecovery(t *testing.T) { } func TestFileStoreBitRot(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -1296,8 +1275,7 @@ func TestFileStoreBitRot(t *testing.T) { } func TestFileStoreEraseMsg(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -1358,8 +1336,7 @@ func TestFileStoreEraseMsg(t *testing.T) { } func TestFileStoreEraseAndNoIndexRecovery(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -1412,8 +1389,7 @@ func TestFileStoreEraseAndNoIndexRecovery(t *testing.T) { } func TestFileStoreMeta(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() mconfig := StreamConfig{Name: "ZZ-22-33", Storage: FileStorage, Subjects: []string{"foo.*"}, Replicas: 22} @@ -1509,8 +1485,7 @@ func TestFileStoreMeta(t *testing.T) { } func TestFileStoreWriteAndReadSameBlock(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir}, @@ -1532,8 +1507,7 @@ func TestFileStoreWriteAndReadSameBlock(t *testing.T) { } func TestFileStoreAndRetrieveMultiBlock(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() subj, msg := "foo", []byte("Hello World!") storedMsgSize := fileStoreMsgSize(subj, nil, msg) @@ -1574,8 +1548,7 @@ func TestFileStoreAndRetrieveMultiBlock(t *testing.T) { } func TestFileStoreCollapseDmap(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() subj, msg := "foo", []byte("Hello World!") storedMsgSize := fileStoreMsgSize(subj, nil, msg) @@ -1651,8 +1624,7 @@ func TestFileStoreReadCache(t *testing.T) { subj, msg := "foo.bar", make([]byte, 1024) storedMsgSize := fileStoreMsgSize(subj, nil, msg) - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir, CacheExpire: 100 * time.Millisecond}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -1702,8 +1674,7 @@ func TestFileStoreReadCache(t *testing.T) { } func TestFileStorePartialCacheExpiration(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() cexp := 10 * time.Millisecond @@ -1727,8 +1698,7 @@ func TestFileStorePartialCacheExpiration(t *testing.T) { } func TestFileStorePartialIndexes(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() cexp := 10 * time.Millisecond @@ -1774,8 +1744,7 @@ func TestFileStorePartialIndexes(t *testing.T) { } func TestFileStoreSnapshot(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() subj, msg := "foo", []byte("Hello Snappy!") @@ -1838,8 +1807,7 @@ func TestFileStoreSnapshot(t *testing.T) { r := bytes.NewReader(snap) tr := tar.NewReader(s2.NewReader(r)) - rstoreDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, rstoreDir) + rstoreDir := t.TempDir() for { hdr, err := tr.Next() @@ -1962,8 +1930,7 @@ func TestFileStoreSnapshot(t *testing.T) { } func TestFileStoreConsumer(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -2241,8 +2208,7 @@ func TestFileStorePerf(t *testing.T) { friendlyBytes(int64(toStore*storedMsgSize)), ) - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir, AsyncFlush: true}, @@ -2383,8 +2349,7 @@ func TestFileStoreReadBackMsgPerf(t *testing.T) { friendlyBytes(int64(toStore*storedMsgSize)), ) - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir}, @@ -2433,8 +2398,7 @@ func TestFileStoreStoreLimitRemovePerf(t *testing.T) { // 1GB toStore := 1 * 1024 * 1024 * 1024 / storedMsgSize - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir}, @@ -2490,8 +2454,7 @@ func TestFileStorePubPerfWithSmallBlkSize(t *testing.T) { friendlyBytes(int64(toStore*storedMsgSize)), ) - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir, BlockSize: FileStoreMinBlkSize}, @@ -2516,8 +2479,7 @@ func TestFileStorePubPerfWithSmallBlkSize(t *testing.T) { // Saw this manifest from a restart test with max delivered set for JetStream. func TestFileStoreConsumerRedeliveredLost(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -2586,8 +2548,7 @@ func TestFileStoreConsumerRedeliveredLost(t *testing.T) { } func TestFileStoreConsumerFlusher(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -2620,8 +2581,7 @@ func TestFileStoreConsumerFlusher(t *testing.T) { } func TestFileStoreConsumerDeliveredUpdates(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -2677,8 +2637,7 @@ func TestFileStoreConsumerDeliveredUpdates(t *testing.T) { } func TestFileStoreConsumerDeliveredAndAckUpdates(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -2793,8 +2752,7 @@ func TestFileStoreConsumerDeliveredAndAckUpdates(t *testing.T) { } func TestFileStoreStreamStateDeleted(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -2843,8 +2801,7 @@ func TestFileStoreStreamStateDeleted(t *testing.T) { // We have reports that sometimes under load a stream could complain about a storage directory // not being empty. func TestFileStoreStreamDeleteDirNotEmpty(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -2879,8 +2836,7 @@ func TestFileStoreConsumerPerf(t *testing.T) { // Comment out to run, holding place for now. t.SkipNow() - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -2947,8 +2903,7 @@ func TestFileStoreConsumerPerf(t *testing.T) { func TestFileStoreStreamIndexBug(t *testing.T) { // https://github.com/nats-io/jetstream/issues/406 badIdxBytes, _ := base64.StdEncoding.DecodeString("FgGBkw7D/f8/772iDPDIgbU=") - dir := createDir(t, "js-bad-idx-") - defer removeDir(t, dir) + dir := t.TempDir() fn := filepath.Join(dir, "1.idx") os.WriteFile(fn, badIdxBytes, 0644) mb := &msgBlock{index: 1, ifn: fn} @@ -2959,8 +2914,7 @@ func TestFileStoreStreamIndexBug(t *testing.T) { // Reported by Ivan. func TestFileStoreStreamDeleteCacheBug(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir, CacheExpire: 50 * time.Millisecond}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -2987,8 +2941,7 @@ func TestFileStoreStreamDeleteCacheBug(t *testing.T) { // https://github.com/nats-io/nats-server/issues/2068 func TestFileStoreStreamPurgeAndDirtyRestartBug(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, StreamConfig{Name: "zzz", Storage: FileStorage}) if err != nil { @@ -3047,8 +3000,7 @@ func TestFileStoreStreamPurgeAndDirtyRestartBug(t *testing.T) { // rip func TestFileStoreStreamFailToRollBug(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir, BlockSize: 512}, @@ -3104,8 +3056,7 @@ func TestFileStoreBadConsumerState(t *testing.T) { } func TestFileStoreExpireMsgsOnStart(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() ttl := 250 * time.Millisecond cfg := StreamConfig{Name: "ORDERS", Subjects: []string{"orders.*"}, Storage: FileStorage, MaxAge: ttl} @@ -3334,8 +3285,7 @@ func TestFileStoreExpireMsgsOnStart(t *testing.T) { } func TestFileStoreSparseCompaction(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() cfg := StreamConfig{Name: "KV", Subjects: []string{"kv.>"}, Storage: FileStorage} var fs *fileStore @@ -3469,8 +3419,7 @@ func TestFileStoreSparseCompaction(t *testing.T) { } func TestFileStoreSparseCompactionWithInteriorDeletes(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() cfg := StreamConfig{Name: "KV", Subjects: []string{"kv.>"}, Storage: FileStorage} var fs *fileStore @@ -3516,8 +3465,7 @@ func TestFileStoreSparseCompactionWithInteriorDeletes(t *testing.T) { // This is because we would not break out of iterator across more message blocks. // Issue #2622 func TestFileStorePurgeExKeepOneBug(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir, BlockSize: 128}, @@ -3551,8 +3499,7 @@ func TestFileStorePurgeExKeepOneBug(t *testing.T) { } func TestFileStoreRemoveLastWriteIndex(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, StreamConfig{Name: "TEST", Storage: FileStorage}) if err != nil { @@ -3581,8 +3528,7 @@ func TestFileStoreRemoveLastWriteIndex(t *testing.T) { } func TestFileStoreFilteredPendingBug(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, StreamConfig{Name: "TEST", Storage: FileStorage}) if err != nil { @@ -3612,8 +3558,7 @@ func TestFileStoreFetchPerf(t *testing.T) { // Comment out to run. t.SkipNow() - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir, BlockSize: 8192, AsyncFlush: true}, StreamConfig{Name: "TEST", Storage: FileStorage}) if err != nil { @@ -3644,8 +3589,7 @@ func TestFileStoreFetchPerf(t *testing.T) { // For things like raft log when we compact and have a message block that could reclaim > 50% of space for block we want to do that. // https://github.com/nats-io/nats-server/issues/2936 func TestFileStoreCompactReclaimHeadSpace(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir, BlockSize: 1024 * 1024}, @@ -3807,8 +3751,7 @@ func TestFileStoreCompactReclaimHeadSpace(t *testing.T) { } func TestFileStoreRememberLastMsgTime(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() var fs *fileStore getFS := func() *fileStore { @@ -3915,8 +3858,7 @@ func (fs *fileStore) getFirstBlock() *msgBlock { } func TestFileStoreRebuildStateDmapAccountingBug(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir, BlockSize: 1024 * 1024}, @@ -3968,8 +3910,7 @@ func TestFileStoreRebuildStateDmapAccountingBug(t *testing.T) { } func TestFileStorePurgeExWithSubject(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir, BlockSize: 1000}, @@ -3999,8 +3940,7 @@ func TestFileStorePurgeExWithSubject(t *testing.T) { // For instance, with encryption and an expiring stream that has no messages, when a restart happens the decrypt will fail // since their are extra bytes, and this could lead to a stream sequence reset to zero. func TestFileStoreShortIndexWriteBug(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() // Encrypted mode shows, but could effect non-encrypted mode. prf := func(context []byte) ([]byte, error) { @@ -4064,8 +4004,7 @@ func TestFileStoreShortIndexWriteBug(t *testing.T) { } func TestFileStoreDoubleCompactWithWriteInBetweenEncryptedBug(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(storeDir) + storeDir := t.TempDir() prf := func(context []byte) ([]byte, error) { h := hmac.New(sha256.New, []byte("dlc22")) @@ -4110,8 +4049,7 @@ func TestFileStoreDoubleCompactWithWriteInBetweenEncryptedBug(t *testing.T) { // possibly still have a non-zero counter from previous writes. // Happens when all messages expire and the are flushed and then subsequent writes occur. func TestFileStoreEncryptedKeepIndexNeedBekResetBug(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(storeDir) + storeDir := t.TempDir() prf := func(context []byte) ([]byte, error) { h := hmac.New(sha256.New, []byte("dlc22")) @@ -4181,8 +4119,7 @@ func (fs *fileStore) reportMeta() (hasPSIM, hasAnyFSS bool) { } func TestFileStoreExpireSubjectMeta(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir, BlockSize: 1024, CacheExpire: time.Second}, @@ -4247,8 +4184,7 @@ func TestFileStoreExpireSubjectMeta(t *testing.T) { } func TestFileStoreMaxMsgsPerSubject(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir, BlockSize: 128, CacheExpire: time.Second}, @@ -4280,8 +4216,7 @@ func TestFileStoreMaxMsgsPerSubject(t *testing.T) { } func TestFileStoreSubjectStateCacheExpiration(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir, BlockSize: 32, CacheExpire: time.Second}, @@ -4341,8 +4276,7 @@ func TestFileStoreSubjectStateCacheExpiration(t *testing.T) { } func TestFileStoreEncryptedAES(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(storeDir) + storeDir := t.TempDir() prf := func(context []byte) ([]byte, error) { h := hmac.New(sha256.New, []byte("dlc22")) @@ -4406,8 +4340,7 @@ func TestFileStoreEncryptedAES(t *testing.T) { // Make sure we do not go through block loads when we know no subjects will exists, e.g. raft. func TestFileStoreNoFSSWhenNoSubjects(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir}, @@ -4450,8 +4383,7 @@ func TestFileStoreNoFSSWhenNoSubjects(t *testing.T) { } func TestFileStoreNoFSSBugAfterRemoveFirst(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir, BlockSize: 8 * 1024 * 1024, CacheExpire: 200 * time.Millisecond}, @@ -4494,8 +4426,7 @@ func TestFileStoreNoFSSBugAfterRemoveFirst(t *testing.T) { } func TestFileStoreNoFSSAfterRecover(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir}, @@ -4535,8 +4466,7 @@ func TestFileStoreNoFSSAfterRecover(t *testing.T) { } func TestFileStoreFSSCloseAndKeepOnExpireOnRecoverBug(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(storeDir) + storeDir := t.TempDir() ttl := 100 * time.Millisecond fs, err := newFileStore( @@ -4566,8 +4496,7 @@ func TestFileStoreFSSCloseAndKeepOnExpireOnRecoverBug(t *testing.T) { } func TestFileStoreFSSBadStateBug(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir}, @@ -4611,8 +4540,7 @@ func TestFileStoreFSSBadStateBug(t *testing.T) { } func TestFileStoreFSSExpireNumPendingBug(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(storeDir) + storeDir := t.TempDir() cexp := 100 * time.Millisecond fs, err := newFileStore( @@ -4635,8 +4563,7 @@ func TestFileStoreFSSExpireNumPendingBug(t *testing.T) { // https://github.com/nats-io/nats-server/issues/3484 func TestFileStoreFilteredFirstMatchingBug(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir}, @@ -4681,8 +4608,7 @@ func TestFileStoreFilteredFirstMatchingBug(t *testing.T) { } func TestFileStoreOutOfSpaceRebuildState(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir}, @@ -4726,8 +4652,7 @@ func TestFileStoreOutOfSpaceRebuildState(t *testing.T) { } func TestFileStoreRebuildStateProperlyWithMaxMsgsPerSubject(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore( FileStoreConfig{StoreDir: storeDir, BlockSize: 4096}, @@ -4807,8 +4732,7 @@ func TestFileStoreUpdateMaxMsgsPerSubject(t *testing.T) { MaxMsgsPer: 10, } - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() fs, err := newFileStore(FileStoreConfig{StoreDir: storeDir}, cfg) require_NoError(t, err) diff --git a/server/gateway_test.go b/server/gateway_test.go index e7e1f101..05a810a3 100644 --- a/server/gateway_test.go +++ b/server/gateway_test.go @@ -6339,7 +6339,6 @@ func TestGatewayTLSConfigReload(t *testing.T) { } ` confA := createConfFile(t, []byte(fmt.Sprintf(template, ""))) - defer removeFile(t, confA) srvA, optsA := RunServerWithConfig(confA) defer srvA.Shutdown() @@ -6392,7 +6391,6 @@ func TestGatewayTLSConfigReloadForRemote(t *testing.T) { } ` confB := createConfFile(t, []byte(fmt.Sprintf(template, optsA.Gateway.Port, ""))) - defer removeFile(t, confB) srvB, _ := RunServerWithConfig(confB) defer srvB.Shutdown() @@ -6419,7 +6417,6 @@ func TestGatewayAuthDiscovered(t *testing.T) { authorization: { user: gwuser, password: changeme } } `)) - defer removeFile(t, confA) srvA, optsA := RunServerWithConfig(confA) defer srvA.Shutdown() @@ -6434,7 +6431,6 @@ func TestGatewayAuthDiscovered(t *testing.T) { ] } `, optsA.Gateway.Port))) - defer removeFile(t, confB) srvB, _ := RunServerWithConfig(confB) defer srvB.Shutdown() @@ -6454,8 +6450,7 @@ func TestTLSGatewaysCertificateImplicitAllowFail(t *testing.T) { func testTLSGatewaysCertificateImplicitAllow(t *testing.T, pass bool) { // Base config for the servers - cfg := createFile(t, "cfg") - defer removeFile(t, cfg.Name()) + cfg := createTempFile(t, "cfg") cfg.WriteString(fmt.Sprintf(` gateway { tls { diff --git a/server/jetstream_benchmark_consume_test.go b/server/jetstream_benchmark_consume_test.go index 20ebdcf5..f2af0ef2 100644 --- a/server/jetstream_benchmark_consume_test.go +++ b/server/jetstream_benchmark_consume_test.go @@ -308,7 +308,7 @@ func BenchmarkJetStreamConsume(b *testing.B) { } var connectURL string if bc.clusterSize == 1 { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(b) defer s.Shutdown() connectURL = s.ClientURL() } else { diff --git a/server/jetstream_benchmark_kv_test.go b/server/jetstream_benchmark_kv_test.go index 0c2c8e12..f89f686c 100644 --- a/server/jetstream_benchmark_kv_test.go +++ b/server/jetstream_benchmark_kv_test.go @@ -184,7 +184,7 @@ func BenchmarkJetStreamKV(b *testing.B) { } var connectURL string if bc.clusterSize == 1 { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(b) defer s.Shutdown() connectURL = s.ClientURL() } else { diff --git a/server/jetstream_benchmark_publish_test.go b/server/jetstream_benchmark_publish_test.go index f4c45fea..c1f3427a 100644 --- a/server/jetstream_benchmark_publish_test.go +++ b/server/jetstream_benchmark_publish_test.go @@ -200,7 +200,7 @@ func BenchmarkJetStreamPublish(b *testing.B) { var connectURL string if bc.clusterSize == 1 { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(b) defer s.Shutdown() connectURL = s.ClientURL() } else { diff --git a/server/jetstream_cluster_1_test.go b/server/jetstream_cluster_1_test.go index 28132eff..ad718dc7 100644 --- a/server/jetstream_cluster_1_test.go +++ b/server/jetstream_cluster_1_test.go @@ -41,7 +41,6 @@ func TestJetStreamClusterConfig(t *testing.T) { jetstream: {max_mem_store: 16GB, max_file_store: 10TB, store_dir: '%s'} cluster { listen: 127.0.0.1:-1 } `)) - defer removeFile(t, conf) check := func(errStr string) { t.Helper() @@ -62,7 +61,6 @@ func TestJetStreamClusterConfig(t *testing.T) { jetstream: {max_mem_store: 16GB, max_file_store: 10TB, store_dir: '%s'} cluster { listen: 127.0.0.1:-1 } `)) - defer removeFile(t, conf) check("requires `cluster.name`") } @@ -3691,14 +3689,12 @@ func TestJetStreamClusterAccountPurge(t *testing.T) { sysKp, syspub := createKey(t) sysJwt := encodeClaim(t, jwt.NewAccountClaims(syspub), syspub) sysCreds := newUser(t, sysKp) - defer removeFile(t, sysCreds) accKp, accpub := createKey(t) accClaim := jwt.NewAccountClaims(accpub) accClaim.Limits.JetStreamLimits.DiskStorage = 1024 * 1024 * 5 accClaim.Limits.JetStreamLimits.MemoryStorage = 1024 * 1024 * 5 accJwt := encodeClaim(t, accClaim, accpub) accCreds := newUser(t, accKp) - defer removeFile(t, accCreds) tmlp := ` listen: 127.0.0.1:-1 diff --git a/server/jetstream_cluster_2_test.go b/server/jetstream_cluster_2_test.go index b5970ef1..55d9f365 100644 --- a/server/jetstream_cluster_2_test.go +++ b/server/jetstream_cluster_2_test.go @@ -2776,7 +2776,7 @@ func TestJetStreamClusterMixedModeColdStartPrune(t *testing.T) { } func TestJetStreamClusterMirrorAndSourceCrossNonNeighboringDomain(t *testing.T) { - storeDir1 := createDir(t, JetStreamStoreDir) + storeDir1 := t.TempDir() conf1 := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 jetstream: {max_mem_store: 256MB, max_file_store: 256MB, domain: domain1, store_dir: '%s'} @@ -2792,7 +2792,7 @@ func TestJetStreamClusterMirrorAndSourceCrossNonNeighboringDomain(t *testing.T) `, storeDir1))) s1, _ := RunServerWithConfig(conf1) defer s1.Shutdown() - storeDir2 := createDir(t, JetStreamStoreDir) + storeDir2 := t.TempDir() conf2 := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 jetstream: {max_mem_store: 256MB, max_file_store: 256MB, domain: domain2, store_dir: '%s'} @@ -2809,7 +2809,7 @@ func TestJetStreamClusterMirrorAndSourceCrossNonNeighboringDomain(t *testing.T) `, storeDir2, s1.opts.LeafNode.Port, s1.opts.LeafNode.Port))) s2, _ := RunServerWithConfig(conf2) defer s2.Shutdown() - storeDir3 := createDir(t, JetStreamStoreDir) + storeDir3 := t.TempDir() conf3 := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 jetstream: {max_mem_store: 256MB, max_file_store: 256MB, domain: domain3, store_dir: '%s'} @@ -2889,10 +2889,7 @@ func TestJetStreamClusterMirrorAndSourceCrossNonNeighboringDomain(t *testing.T) } func TestJetStreamClusterSeal(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() c := createJetStreamClusterExplicit(t, "JSC", 3) @@ -3404,10 +3401,7 @@ func TestJetStreamClusterAccountInfoForSystemAccount(t *testing.T) { } func TestJetStreamClusterListFilter(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() c := createJetStreamClusterExplicit(t, "R3S", 3) @@ -3460,10 +3454,7 @@ func TestJetStreamClusterListFilter(t *testing.T) { } func TestJetStreamClusterConsumerUpdates(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() c := createJetStreamClusterExplicit(t, "JSC", 5) @@ -4228,10 +4219,7 @@ func TestJetStreamClusterRedeliverBackoffs(t *testing.T) { } func TestJetStreamClusterConsumerUpgrade(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() c := createJetStreamClusterExplicit(t, "JSC", 3) @@ -4257,10 +4245,7 @@ func TestJetStreamClusterConsumerUpgrade(t *testing.T) { } func TestJetStreamClusterAddConsumerWithInfo(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() c := createJetStreamClusterExplicit(t, "JSC", 3) @@ -4714,10 +4699,7 @@ func TestJetStreamClusterMirrorOrSourceNotActiveReporting(t *testing.T) { } func TestJetStreamClusterStreamAdvisories(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() c := createJetStreamClusterExplicit(t, "JSC", 3) @@ -4898,7 +4880,7 @@ func TestJetStreamClusterDuplicateRoutesDisruptJetStreamMetaGroup(t *testing.T) rports := []int{22208, 22209, 22210} for i, p := range rports { - sname, sd := fmt.Sprintf("S%d", i+1), createDir(t, JetStreamStoreDir) + sname, sd := fmt.Sprintf("S%d", i+1), t.TempDir() cf := fmt.Sprintf(tmpl, sname, sd, p, rports[0], rports[1], rports[2], rports[0], rports[1], rports[2]) s, o := RunServerWithConfig(createConfFile(t, []byte(cf))) c.servers, c.opts = append(c.servers, s), append(c.opts, o) @@ -5332,10 +5314,7 @@ func TestJetStreamClusterMirrorSourceLoop(t *testing.T) { } t.Run("Single", func(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() test(t, s, 1) }) @@ -6411,10 +6390,7 @@ func TestJetStreamClusterRePublishUpdateNotSupported(t *testing.T) { expectFailUpdate() } - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() c := createJetStreamClusterExplicit(t, "JSC", 3) diff --git a/server/jetstream_cluster_3_test.go b/server/jetstream_cluster_3_test.go index a8161039..c73ee28e 100644 --- a/server/jetstream_cluster_3_test.go +++ b/server/jetstream_cluster_3_test.go @@ -467,10 +467,7 @@ func TestJetStreamClusterDeleteConsumerWhileServerDown(t *testing.T) { } func TestJetStreamClusterNegativeReplicas(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() c := createJetStreamClusterExplicit(t, "R3S", 3) @@ -526,10 +523,7 @@ func TestJetStreamClusterNegativeReplicas(t *testing.T) { } func TestJetStreamClusterUserGivenConsName(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() c := createJetStreamClusterExplicit(t, "R3S", 3) @@ -735,7 +729,7 @@ func TestJetStreamClusterMirrorCrossDomainOnLeadnodeNoSystemShare(t *testing.T) func TestJetStreamClusterFirstSeqMismatch(t *testing.T) { c := createJetStreamClusterWithTemplateAndModHook(t, jsClusterTempl, "C", 3, func(serverName, clusterName, storeDir, conf string) string { - tf := createFile(t, "") + tf := createTempFile(t, "") logName := tf.Name() tf.Close() return fmt.Sprintf("%s\nlogfile: '%s'", conf, logName) @@ -813,10 +807,7 @@ func TestJetStreamClusterFirstSeqMismatch(t *testing.T) { func TestJetStreamClusterConsumerInactiveThreshold(t *testing.T) { // Create a standalone, a cluster, and a super cluster - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() c := createJetStreamClusterExplicit(t, "R3S", 3) @@ -1055,10 +1046,7 @@ func TestJetStreamClusterSignalPullConsumersOnDelete(t *testing.T) { // https://github.com/nats-io/nats-server/issues/3559 func TestJetStreamClusterSourceWithOptStartTime(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() c := createJetStreamClusterExplicit(t, "R3S", 3) diff --git a/server/jetstream_helpers_test.go b/server/jetstream_helpers_test.go index 38582431..1faaff7a 100644 --- a/server/jetstream_helpers_test.go +++ b/server/jetstream_helpers_test.go @@ -412,7 +412,7 @@ func createJetStreamSuperClusterWithTemplateAndModHook(t *testing.T, tmpl string routeConfig := strings.Join(routes, ",") for si := 0; si < numServersPer; si++ { - storeDir := createDir(t, JetStreamStoreDir) + storeDir := t.TempDir() sn := fmt.Sprintf("%s-S%d", cn, si+1) bconf := fmt.Sprintf(tmpl, sn, storeDir, cn, cp+si, routeConfig) conf := fmt.Sprintf(jsSuperClusterTempl, bconf, cn, gp, gwconf) @@ -639,7 +639,7 @@ func createMixedModeCluster(t testing.TB, tmpl string, clusterName, snPre string c := &cluster{servers: make([]*Server, 0, numServers), opts: make([]*Options, 0, numServers), name: clusterName} for cp := startClusterPort; cp < startClusterPort+numServers; cp++ { - storeDir := createDir(t, JetStreamStoreDir) + storeDir := t.TempDir() sn := fmt.Sprintf("%sS-%d", snPre, cp-startClusterPort+1) conf := fmt.Sprintf(tmpl, sn, storeDir, clusterName, cp, routeConfig) @@ -724,7 +724,7 @@ func createJetStreamClusterAndModHook(t testing.TB, tmpl string, clusterName, sn c := &cluster{servers: make([]*Server, 0, numServers), opts: make([]*Options, 0, numServers), name: clusterName} for cp := portStart; cp < portStart+numServers; cp++ { - storeDir := createDir(t, JetStreamStoreDir) + storeDir := t.TempDir() sn := fmt.Sprintf("%sS-%d", snPre, cp-portStart+1) conf := fmt.Sprintf(tmpl, sn, storeDir, clusterName, cp, routeConfig) if modify != nil { @@ -748,7 +748,7 @@ func createJetStreamClusterAndModHook(t testing.TB, tmpl string, clusterName, sn func (c *cluster) addInNewServer() *Server { c.t.Helper() sn := fmt.Sprintf("S-%d", len(c.servers)+1) - storeDir, _ := os.MkdirTemp(tempRoot, JetStreamStoreDir) + storeDir := c.t.TempDir() seedRoute := fmt.Sprintf("nats-route://127.0.0.1:%d", c.opts[0].Cluster.Port) conf := fmt.Sprintf(jsClusterTempl, sn, storeDir, c.name, -1, seedRoute) s, o := RunServerWithConfig(createConfFile(c.t, []byte(conf))) @@ -764,7 +764,7 @@ func (c *cluster) createSingleLeafNodeNoSystemAccount() *Server { lno := as.getOpts().LeafNode ln1 := fmt.Sprintf("nats://one:p@%s:%d", lno.Host, lno.Port) ln2 := fmt.Sprintf("nats://two:p@%s:%d", lno.Host, lno.Port) - conf := fmt.Sprintf(jsClusterSingleLeafNodeTempl, createDir(c.t, JetStreamStoreDir), ln1, ln2) + conf := fmt.Sprintf(jsClusterSingleLeafNodeTempl, c.t.TempDir(), ln1, ln2) s, o := RunServerWithConfig(createConfFile(c.t, []byte(conf))) c.servers = append(c.servers, s) c.opts = append(c.opts, o) @@ -788,7 +788,7 @@ func (c *cluster) createSingleLeafNodeNoSystemAccountAndEnablesJetStreamWithDoma as := c.randomServer() lno := as.getOpts().LeafNode ln := fmt.Sprintf("nats://%s:p@%s:%d", user, lno.Host, lno.Port) - conf := fmt.Sprintf(tmpl, createDir(c.t, JetStreamStoreDir), ln) + conf := fmt.Sprintf(tmpl, c.t.TempDir(), ln) s, o := RunServerWithConfig(createConfFile(c.t, []byte(conf))) c.servers = append(c.servers, s) c.opts = append(c.opts, o) @@ -930,7 +930,7 @@ func (c *cluster) createLeafNode(extend bool) *Server { func (c *cluster) createLeafNodeWithTemplate(name, template string) *Server { c.t.Helper() tmpl := c.createLeafSolicit(template) - conf := fmt.Sprintf(tmpl, name, createDir(c.t, JetStreamStoreDir)) + conf := fmt.Sprintf(tmpl, name, c.t.TempDir()) s, o := RunServerWithConfig(createConfFile(c.t, []byte(conf))) c.servers = append(c.servers, s) c.opts = append(c.opts, o) @@ -940,7 +940,7 @@ func (c *cluster) createLeafNodeWithTemplate(name, template string) *Server { func (c *cluster) createLeafNodeWithTemplateNoSystem(name, template string) *Server { c.t.Helper() tmpl := c.createLeafSolicitNoSystem(template) - conf := fmt.Sprintf(tmpl, name, createDir(c.t, JetStreamStoreDir)) + conf := fmt.Sprintf(tmpl, name, c.t.TempDir()) s, o := RunServerWithConfig(createConfFile(c.t, []byte(conf))) c.servers = append(c.servers, s) c.opts = append(c.opts, o) diff --git a/server/jetstream_jwt_test.go b/server/jetstream_jwt_test.go index faaef767..48aa3f57 100644 --- a/server/jetstream_jwt_test.go +++ b/server/jetstream_jwt_test.go @@ -124,8 +124,7 @@ func TestJetStreamJWTLimits(t *testing.T) { userJwt, err := uclaim.Encode(akp) require_NoError(t, err) userCreds := genCredsFile(t, userJwt, uSeed) - dir := createDir(t, "srv") - defer removeDir(t, dir) + dir := t.TempDir() conf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 jetstream: {max_mem_store: 10Mb, max_file_store: 10Mb} @@ -136,7 +135,6 @@ func TestJetStreamJWTLimits(t *testing.T) { } system_account: %s `, ojwt, dir, sysPub))) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() port := opts.Port @@ -182,7 +180,6 @@ func TestJetStreamJWTLimits(t *testing.T) { } system_account: %s `, port, ojwt, dir, sysPub))) - defer removeFile(t, conf) s, _ = RunServerWithConfig(conf) defer s.Shutdown() c.Flush() // force client to discover the disconnect @@ -199,7 +196,6 @@ func TestJetStreamJWTLimits(t *testing.T) { } system_account: %s `, port, ojwt, dir, sysPub))) - defer removeFile(t, conf) s, _ = RunServerWithConfig(conf) defer s.Shutdown() c.Flush() // force client to discover the disconnect @@ -215,7 +211,6 @@ func TestJetStreamJWTDisallowBearer(t *testing.T) { sysKp, syspub := createKey(t) sysJwt := encodeClaim(t, jwt.NewAccountClaims(syspub), syspub) sysCreds := newUser(t, sysKp) - defer removeFile(t, sysCreds) accKp, err := nkeys.CreateAccount() require_NoError(t, err) @@ -234,8 +229,7 @@ func TestJetStreamJWTDisallowBearer(t *testing.T) { uc.BearerToken = false uOpt2 := createUserCredsEx(t, uc, accKp) - dir := createDir(t, "srv") - defer removeDir(t, dir) + dir := t.TempDir() cf := createConfFile(t, []byte(fmt.Sprintf(` port: -1 operator = %s @@ -248,7 +242,6 @@ func TestJetStreamJWTDisallowBearer(t *testing.T) { %s : "%s" } `, ojwt, syspub, dir, syspub, sysJwt))) - defer removeFile(t, cf) s, _ := RunServerWithConfig(cf) defer s.Shutdown() @@ -286,7 +279,6 @@ func TestJetStreamJWTMove(t *testing.T) { sysKp, syspub := createKey(t) sysJwt := encodeClaim(t, jwt.NewAccountClaims(syspub), syspub) sysCreds := newUser(t, sysKp) - defer removeFile(t, sysCreds) accKp, aExpPub := createKey(t) @@ -294,7 +286,6 @@ func TestJetStreamJWTMove(t *testing.T) { accClaim.Name = "acc" accJwt := encodeClaim(t, accClaim, aExpPub) accCreds := newUser(t, accKp) - defer removeFile(t, accCreds) tmlp := ` listen: 127.0.0.1:-1 @@ -423,8 +414,7 @@ func TestJetStreamJWTMove(t *testing.T) { func TestJetStreamJWTClusteredTiers(t *testing.T) { sysKp, syspub := createKey(t) sysJwt := encodeClaim(t, jwt.NewAccountClaims(syspub), syspub) - sysCreds := newUser(t, sysKp) - defer removeFile(t, sysCreds) + newUser(t, sysKp) accKp, aExpPub := createKey(t) accClaim := jwt.NewAccountClaims(aExpPub) @@ -579,7 +569,6 @@ func TestJetStreamJWTClusteredTiersChange(t *testing.T) { sysKp, syspub := createKey(t) sysJwt := encodeClaim(t, jwt.NewAccountClaims(syspub), syspub) sysCreds := newUser(t, sysKp) - defer removeFile(t, sysCreds) accKp, aExpPub := createKey(t) accClaim := jwt.NewAccountClaims(aExpPub) @@ -665,7 +654,6 @@ func TestJetStreamJWTClusteredDeleteTierWithStreamAndMove(t *testing.T) { sysKp, syspub := createKey(t) sysJwt := encodeClaim(t, jwt.NewAccountClaims(syspub), syspub) sysCreds := newUser(t, sysKp) - defer removeFile(t, sysCreds) accKp, aExpPub := createKey(t) accClaim := jwt.NewAccountClaims(aExpPub) @@ -933,10 +921,8 @@ func TestJetStreamExpiredAccountNotCountedTowardLimits(t *testing.T) { var syspub, sysjwt, sysCreds string createAccountAndUser(&syspub, &sysjwt, &sysCreds) - defer removeFile(t, sysCreds) - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) + dirSrv := t.TempDir() conf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 operator: %s @@ -949,7 +935,6 @@ func TestJetStreamExpiredAccountNotCountedTowardLimits(t *testing.T) { timeout: "500ms" } `, opJwt, syspub, dirSrv))) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -959,7 +944,6 @@ func TestJetStreamExpiredAccountNotCountedTowardLimits(t *testing.T) { var apub, ajwt1, aCreds1 string createAccountAndUser(&apub, &ajwt1, &aCreds1) - defer removeFile(t, aCreds1) // push jwt (for full resolver) updateJwt(t, s.ClientURL(), sysCreds, ajwt1, 1) @@ -979,7 +963,6 @@ func TestJetStreamExpiredAccountNotCountedTowardLimits(t *testing.T) { var apub2, ajwt2, aCreds2 string createAccountAndUser(&apub2, &ajwt2, &aCreds2) - defer removeFile(t, aCreds2) // push jwt (for full resolver) updateJwt(t, s.ClientURL(), sysCreds, ajwt2, 1) @@ -1034,10 +1017,8 @@ func TestJetStreamDeletedAccountDoesNotLeakSubscriptions(t *testing.T) { var syspub, sysjwt, sysCreds string createAccountAndUser(&syspub, &sysjwt, &sysCreds) - defer removeFile(t, sysCreds) - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) + dirSrv := t.TempDir() conf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 operator: %s @@ -1050,7 +1031,6 @@ func TestJetStreamDeletedAccountDoesNotLeakSubscriptions(t *testing.T) { timeout: "500ms" } `, opJwt, dirSrv, syspub, dirSrv))) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -1085,7 +1065,6 @@ func TestJetStreamDeletedAccountDoesNotLeakSubscriptions(t *testing.T) { var apub, ajwt1, aCreds1 string createAccountAndUser(&apub, &ajwt1, &aCreds1) - defer removeFile(t, aCreds1) // push jwt (for full resolver) updateJwt(t, s.ClientURL(), sysCreds, ajwt1, 1) @@ -1159,10 +1138,8 @@ func TestJetStreamDeletedAccountIsReEnabled(t *testing.T) { // admin user var syspub, sysjwt, sysCreds string createAccountAndUser(&syspub, &sysjwt, &sysCreds) - defer removeFile(t, sysCreds) - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) + dirSrv := t.TempDir() conf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 operator: %s @@ -1175,7 +1152,6 @@ func TestJetStreamDeletedAccountIsReEnabled(t *testing.T) { timeout: "500ms" } `, opJwt, dirSrv, syspub, dirSrv))) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -1206,7 +1182,6 @@ func TestJetStreamDeletedAccountIsReEnabled(t *testing.T) { ujwt1, err := uclaim.Encode(kp) require_NoError(t, err) aCreds1 = genCredsFile(t, ujwt1, seed) - defer removeFile(t, aCreds1) // push user account updateJwt(t, s.ClientURL(), sysCreds, ajwt1, 1) diff --git a/server/jetstream_leafnode_test.go b/server/jetstream_leafnode_test.go index fa1664a0..b589eade 100644 --- a/server/jetstream_leafnode_test.go +++ b/server/jetstream_leafnode_test.go @@ -100,30 +100,26 @@ func TestJetStreamLeafNodeUniqueServerNameCrossJSDomain(t *testing.T) { } ` t.Run("same-domain", func(t *testing.T) { - confA := createConfFile(t, []byte(fmt.Sprintf(tmplA, name, createDir(t, JetStreamStoreDir)))) - defer removeFile(t, confA) + confA := createConfFile(t, []byte(fmt.Sprintf(tmplA, name, t.TempDir()))) sA, oA := RunServerWithConfig(confA) defer sA.Shutdown() // using same domain as sA - confL := createConfFile(t, []byte(fmt.Sprintf(tmplL, name, createDir(t, JetStreamStoreDir), "hub", + confL := createConfFile(t, []byte(fmt.Sprintf(tmplL, name, t.TempDir(), "hub", fmt.Sprintf("nats://y:p@127.0.0.1:%d", oA.LeafNode.Port), fmt.Sprintf("nats://admin:s3cr3t!@127.0.0.1:%d", oA.LeafNode.Port)))) - defer removeFile(t, confL) sL, _ := RunServerWithConfig(confL) defer sL.Shutdown() // as server name uniqueness is violates, sL.ID() is the expected value test(sA, sL.ID(), sA, sL) }) t.Run("different-domain", func(t *testing.T) { - confA := createConfFile(t, []byte(fmt.Sprintf(tmplA, name, createDir(t, JetStreamStoreDir)))) - defer removeFile(t, confA) + confA := createConfFile(t, []byte(fmt.Sprintf(tmplA, name, t.TempDir()))) sA, oA := RunServerWithConfig(confA) defer sA.Shutdown() // using different domain as sA - confL := createConfFile(t, []byte(fmt.Sprintf(tmplL, name, createDir(t, JetStreamStoreDir), "spoke", + confL := createConfFile(t, []byte(fmt.Sprintf(tmplL, name, t.TempDir(), "spoke", fmt.Sprintf("nats://y:p@127.0.0.1:%d", oA.LeafNode.Port), fmt.Sprintf("nats://admin:s3cr3t!@127.0.0.1:%d", oA.LeafNode.Port)))) - defer removeFile(t, confL) sL, _ := RunServerWithConfig(confL) defer sL.Shutdown() checkLeafNodeConnectedCount(t, sL, 2) @@ -156,12 +152,9 @@ func TestJetStreamLeafNodeJwtPermsAndJSDomains(t *testing.T) { j.Sub.Deny.Add("subdeny") j.Pub.Deny.Add("pubdeny") }) - defer removeFile(t, lnCreds) unlimitedCreds := createUserWithLimit(t, accKp, noExpiration, nil) - defer removeFile(t, unlimitedCreds) sysCreds := createUserWithLimit(t, sysKp, noExpiration, nil) - defer removeFile(t, sysCreds) tmplA := ` operator: %s @@ -204,14 +197,12 @@ leafnodes:{ confA := createConfFile(t, []byte(fmt.Sprintf(tmplA, ojwt, sysPub, sysPub, sysJwt, accPub, accJwt, - createDir(t, JetStreamStoreDir)))) - defer removeFile(t, confA) + t.TempDir()))) sA, _ := RunServerWithConfig(confA) defer sA.Shutdown() - confL := createConfFile(t, []byte(fmt.Sprintf(tmplL, createDir(t, JetStreamStoreDir), + confL := createConfFile(t, []byte(fmt.Sprintf(tmplL, t.TempDir(), sA.opts.LeafNode.Port, lnCreds, sA.opts.LeafNode.Port, sysCreds))) - defer removeFile(t, confL) sL, _ := RunServerWithConfig(confL) defer sL.Shutdown() @@ -411,17 +402,13 @@ leafnodes:{ {false, true}, {false, false}} { t.Run(fmt.Sprintf("%t-%t", testCase.same, testCase.leafFunctionPreJoin), func(t *testing.T) { - sd1 := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(sd1) + sd1 := t.TempDir() confA := createConfFile(t, []byte(fmt.Sprintf(tmplA, sd1))) - defer removeFile(t, confA) sA, _ := RunServerWithConfig(confA) defer sA.Shutdown() - sd2 := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(sd2) + sd2 := t.TempDir() confB := createConfFile(t, []byte(fmt.Sprintf(tmplB, sd2))) - defer removeFile(t, confB) sB, _ := RunServerWithConfig(confB) defer sB.Shutdown() @@ -444,19 +431,15 @@ leafnodes:{ hint = fmt.Sprintf("extension_hint: %s", strings.ToUpper(jsNoExtend)) } - sd3 := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(sd3) + sd3 := t.TempDir() // deliberately pick server sA and proxy confLA := createConfFile(t, []byte(fmt.Sprintf(tmplLA, sd3, hint, sA.opts.LeafNode.Port, lPort))) - defer removeFile(t, confLA) sLA, _ := RunServerWithConfig(confLA) defer sLA.Shutdown() - sd4 := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(sd4) + sd4 := t.TempDir() // deliberately pick server sA and proxy confLB := createConfFile(t, []byte(fmt.Sprintf(tmplLB, sd4, hint, sA.opts.LeafNode.Port, lPort))) - defer removeFile(t, confLB) sLB, _ := RunServerWithConfig(confLB) defer sLB.Shutdown() @@ -673,22 +656,17 @@ cluster: { name: clustL } jsDisabledDomainString = "extension_hint: will_extend" } - sd1 := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(sd1) + sd1 := t.TempDir() confA := createConfFile(t, []byte(fmt.Sprintf(tmplA, jsEnabledDomainString, sd1))) - defer removeFile(t, confA) sA, _ := RunServerWithConfig(confA) defer sA.Shutdown() - sd2 := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(sd2) + sd2 := t.TempDir() confB := createConfFile(t, []byte(fmt.Sprintf(tmplB, jsEnabledDomainString, sd2))) - defer removeFile(t, confB) sB, _ := RunServerWithConfig(confB) defer sB.Shutdown() confC := createConfFile(t, []byte(fmt.Sprintf(tmplC, jsDisabledDomainString))) - defer removeFile(t, confC) sC, _ := RunServerWithConfig(confC) defer sC.Shutdown() @@ -696,11 +674,9 @@ cluster: { name: clustL } c := cluster{t: t, servers: []*Server{sA, sB, sC}} c.waitOnPeerCount(2) - sd3 := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(sd3) + sd3 := t.TempDir() // deliberately pick server sC (no JS) to connect to confLA := createConfFile(t, []byte(fmt.Sprintf(tmplLA, jsEnabledDomainString, sd3, sC.opts.LeafNode.Port, sC.opts.LeafNode.Port))) - defer removeFile(t, confLA) sLA, _ := RunServerWithConfig(confLA) defer sLA.Shutdown() @@ -776,11 +752,9 @@ leafnodes:{ pl.Sub.Deny.Add(jsAllAPI) }) - sd := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(sd) + sd := t.TempDir() confL := createConfFile(t, []byte(fmt.Sprintf(tmplL, sd, creds, creds))) - defer removeFile(t, confL) opts := LoadConfig(confL) sL, err := NewServer(opts) require_NoError(t, err) @@ -852,7 +826,6 @@ leafnodes: { test := func(domain string, sysShared bool) { confHub := createConfFile(t, []byte(fmt.Sprintf(tmplHub, -1, "disabled", "disabled", -1, ""))) - defer removeFile(t, confHub) sHub, _ := RunServerWithConfig(confHub) defer sHub.Shutdown() @@ -866,10 +839,8 @@ leafnodes: { sys = fmt.Sprintf(`{url:nats://s1:s1@127.0.0.1:%d, account: SYS}`, sHub.opts.LeafNode.Port) } - sdLeaf := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(sdLeaf) + sdLeaf := t.TempDir() confL := createConfFile(t, []byte(fmt.Sprintf(tmplL, domain, sdLeaf, sHub.opts.LeafNode.Port, sys, noDomainFix))) - defer removeFile(t, confL) sLeaf, _ := RunServerWithConfig(confL) defer sLeaf.Shutdown() @@ -910,8 +881,7 @@ leafnodes: { require_NoError(t, err) // Enable jetstream in hub. - sdHub := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(sdHub) + sdHub := t.TempDir() jsEnabled := fmt.Sprintf(`{ domain: "%s", store_dir: '%s', max_mem: 100Mb, max_file: 100Mb }`, domain, sdHub) require_NoError(t, os.WriteFile(confHub, []byte(fmt.Sprintf(tmplHub, sHubUpd1.opts.Port, @@ -1012,21 +982,17 @@ leafnodes: { sysKp, syspub := createKey(t) sysJwt := encodeClaim(t, jwt.NewAccountClaims(syspub), syspub) sysCreds := newUser(t, sysKp) - defer removeFile(t, sysCreds) aKp, aPub := createKey(t) aClaim := jwt.NewAccountClaims(aPub) aJwt := encodeClaim(t, aClaim, aPub) aCreds := newUser(t, aKp) - defer removeFile(t, aCreds) confHub := createConfFile(t, []byte(fmt.Sprintf(tmplHub, -1, ojwt, syspub, syspub, sysJwt, aPub, aJwt, -1, ""))) - defer removeFile(t, confHub) sHub, _ := RunServerWithConfig(confHub) defer sHub.Shutdown() - sdLeaf := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(sdLeaf) + sdLeaf := t.TempDir() confL := createConfFile(t, []byte(fmt.Sprintf(tmplL, domain, sdLeaf, @@ -1035,7 +1001,6 @@ leafnodes: { sHub.opts.LeafNode.Port, sysCreds, noDomainFix))) - defer removeFile(t, confL) sLeaf, _ := RunServerWithConfig(confL) defer sLeaf.Shutdown() @@ -1151,17 +1116,13 @@ leafnodes: { default_js_domain: {B:"DHUB"} ` - sd1 := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(sd1) + sd1 := t.TempDir() confHub1 := createConfFile(t, []byte(fmt.Sprintf(tmplHub1, sd1))) - defer removeFile(t, confHub1) sHub1, _ := RunServerWithConfig(confHub1) defer sHub1.Shutdown() - sd2 := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(sd2) + sd2 := t.TempDir() confHub2 := createConfFile(t, []byte(fmt.Sprintf(tmplHub2, sd2))) - defer removeFile(t, confHub2) sHub2, _ := RunServerWithConfig(confHub2) defer sHub2.Shutdown() @@ -1169,17 +1130,12 @@ default_js_domain: {B:"DHUB"} c1 := cluster{t: t, servers: []*Server{sHub1, sHub2}} c1.waitOnPeerCount(2) - sd3 := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(sd3) + sd3 := t.TempDir() confLeaf1 := createConfFile(t, []byte(fmt.Sprintf(tmplL1, sd3, sHub1.getOpts().LeafNode.Port, sHub1.getOpts().LeafNode.Port))) - defer removeFile(t, confLeaf1) sLeaf1, _ := RunServerWithConfig(confLeaf1) defer sLeaf1.Shutdown() - sd4 := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(sd4) confLeaf2 := createConfFile(t, []byte(fmt.Sprintf(tmplL2, sd3, sHub1.getOpts().LeafNode.Port, sHub1.getOpts().LeafNode.Port))) - defer removeFile(t, confLeaf2) sLeaf2, _ := RunServerWithConfig(confLeaf2) defer sLeaf2.Shutdown() @@ -1264,7 +1220,7 @@ func TestJetStreamLeafNodeSvcImportExportCycle(t *testing.T) { } ] } - `, accounts, createDir(t, JetStreamStoreDir), o.LeafNode.Port))) + `, accounts, t.TempDir(), o.LeafNode.Port))) defer os.Remove(lconf) sl, so := RunServerWithConfig(lconf) defer sl.Shutdown() diff --git a/server/jetstream_super_cluster_test.go b/server/jetstream_super_cluster_test.go index 283388c3..4516532e 100644 --- a/server/jetstream_super_cluster_test.go +++ b/server/jetstream_super_cluster_test.go @@ -444,13 +444,13 @@ func TestJetStreamSuperClusterInterestOnlyMode(t *testing.T) { gateways = [{name: %s, urls: ["nats://127.0.0.1:%d"]}] } ` - storeDir1 := createDir(t, JetStreamStoreDir) + storeDir1 := t.TempDir() conf1 := createConfFile(t, []byte(fmt.Sprintf(template, "S1", storeDir1, "", 23222, "A", 23222, "A", 11222, "B", 11223))) s1, o1 := RunServerWithConfig(conf1) defer s1.Shutdown() - storeDir2 := createDir(t, JetStreamStoreDir) + storeDir2 := t.TempDir() conf2 := createConfFile(t, []byte(fmt.Sprintf(template, "S2", storeDir2, "", 23223, "B", 23223, "B", 11223, "A", 11222))) s2, o2 := RunServerWithConfig(conf2) @@ -2275,7 +2275,6 @@ func TestJetStreamSuperClusterImportConsumerStreamSubjectRemap(t *testing.T) { password: pwd } `, scl.getOpts().LeafNode.Port))) - defer removeFile(t, cf) s, _ := RunServerWithConfig(cf) defer s.Shutdown() checkLeafNodeConnected(t, scl) @@ -2310,7 +2309,6 @@ func TestJetStreamSuperClusterImportConsumerStreamSubjectRemap(t *testing.T) { }, } `, scl.getOpts().LeafNode.Port))) - defer removeFile(t, cf) s, _ := RunServerWithConfig(cf) defer s.Shutdown() checkLeafNodeConnected(t, scl) diff --git a/server/jetstream_test.go b/server/jetstream_test.go index b66978c3..92fe7b16 100644 --- a/server/jetstream_test.go +++ b/server/jetstream_test.go @@ -88,12 +88,11 @@ func TestJetStreamBasicNilConfig(t *testing.T) { } } -func RunBasicJetStreamServer() *Server { +func RunBasicJetStreamServer(t testing.TB) *Server { opts := DefaultTestOptions opts.Port = -1 opts.JetStream = true - tdir, _ := os.MkdirTemp(tempRoot, "jstests-storedir-") - opts.StoreDir = tdir + opts.StoreDir = t.TempDir() return RunServer(&opts) } @@ -126,10 +125,7 @@ func clientConnectWithOldRequest(t *testing.T, s *Server) *nats.Conn { } func TestJetStreamEnableAndDisableAccount(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Global in simple setup should be enabled already. @@ -202,13 +198,9 @@ func TestJetStreamAddStream(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -270,13 +262,9 @@ func TestJetStreamAddStreamDiscardNew(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -367,10 +355,7 @@ func TestJetStreamAutoTuneFSConfig(t *testing.T) { } func TestJetStreamConsumerAndStreamDescriptions(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() descr := "foo asset" @@ -417,10 +402,7 @@ func TestJetStreamConsumerAndStreamDescriptions(t *testing.T) { } } func TestJetStreamConsumerWithNameAndDurable(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() descr := "foo asset" @@ -461,10 +443,7 @@ func TestJetStreamConsumerWithNameAndDurable(t *testing.T) { } func TestJetStreamPubAck(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() sname := "PUBACK" @@ -516,13 +495,9 @@ func TestJetStreamConsumerWithStartTime(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - fsCfg := &FileStoreConfig{BlockSize: 100} mset, err := s.GlobalAccount().addStreamWithStore(c.mconfig, fsCfg) if err != nil { @@ -587,13 +562,9 @@ func TestJetStreamConsumerWithMultipleStartOptions(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -636,13 +607,9 @@ func TestJetStreamConsumerMaxDeliveries(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -710,13 +677,9 @@ func TestJetStreamPullConsumerDelayedFirstPullWithReplayOriginal(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -759,13 +722,9 @@ func TestJetStreamConsumerAckFloorFill(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -831,13 +790,9 @@ func TestJetStreamNoPanicOnRaceBetweenShutdownAndConsumerDelete(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -897,13 +852,9 @@ func TestJetStreamAddStreamMaxMsgSize(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -930,10 +881,7 @@ func TestJetStreamAddStreamMaxMsgSize(t *testing.T) { } func TestJetStreamAddStreamCanonicalNames(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() acc := s.GlobalAccount() @@ -955,10 +903,7 @@ func TestJetStreamAddStreamCanonicalNames(t *testing.T) { } func TestJetStreamAddStreamBadSubjects(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -989,10 +934,7 @@ func TestJetStreamAddStreamBadSubjects(t *testing.T) { } func TestJetStreamMaxConsumers(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -1031,10 +973,7 @@ func TestJetStreamAddStreamOverlappingSubjects(t *testing.T) { Subjects: []string{"foo", "bar", "baz.*", "foo.bar.baz.>"}, } - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() acc := s.GlobalAccount() @@ -1062,10 +1001,7 @@ func TestJetStreamAddStreamOverlappingSubjects(t *testing.T) { } func TestJetStreamAddStreamOverlapWithJSAPISubjects(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() acc := s.GlobalAccount() @@ -1095,10 +1031,7 @@ func TestJetStreamAddStreamSameConfigOK(t *testing.T) { Storage: MemoryStorage, } - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() acc := s.GlobalAccount() @@ -1137,13 +1070,9 @@ func TestJetStreamBasicAckPublish(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -1174,13 +1103,9 @@ func TestJetStreamStateTimestamps(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -1217,13 +1142,9 @@ func TestJetStreamNoAckStream(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - // We can use NoAck to suppress acks even when reply subjects are present. mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { @@ -1256,13 +1177,9 @@ func TestJetStreamCreateConsumer(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -1366,13 +1283,9 @@ func TestJetStreamBasicDeliverSubject(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -1526,13 +1439,9 @@ func TestJetStreamBasicWorkQueue(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -1624,13 +1533,9 @@ func TestJetStreamWorkQueueMaxWaiting(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -1723,13 +1628,9 @@ func TestJetStreamWorkQueueWrapWaiting(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -1809,13 +1710,9 @@ func TestJetStreamWorkQueueRequest(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -1933,13 +1830,9 @@ func TestJetStreamSubjectFiltering(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -2009,13 +1902,9 @@ func TestJetStreamWorkQueueSubjectFiltering(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -2082,13 +1971,9 @@ func TestJetStreamWildcardSubjectFiltering(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -2198,13 +2083,9 @@ func TestJetStreamWorkQueueAckAndNext(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -2271,13 +2152,9 @@ func TestJetStreamWorkQueueRequestBatch(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -2370,13 +2247,9 @@ func TestJetStreamWorkQueueRetentionStream(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -2505,13 +2378,9 @@ func TestJetStreamAckAllRedelivery(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -2591,13 +2460,9 @@ func TestJetStreamAckReplyStreamPending(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -2742,13 +2607,9 @@ func TestJetStreamAckReplyStreamPendingWithAcks(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -2815,13 +2676,9 @@ func TestJetStreamWorkQueueAckWaitRedelivery(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -2919,13 +2776,9 @@ func TestJetStreamWorkQueueNakRedelivery(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -2998,13 +2851,9 @@ func TestJetStreamWorkQueueWorkingIndicator(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -3085,13 +2934,9 @@ func TestJetStreamWorkQueueTerminateDelivery(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -3179,10 +3024,7 @@ func TestJetStreamWorkQueueTerminateDelivery(t *testing.T) { } func TestJetStreamConsumerAckAck(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() if config := s.JetStreamConfig(); config != nil { @@ -3229,10 +3071,7 @@ func TestJetStreamConsumerAckAck(t *testing.T) { } func TestJetStreamAckNext(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() mname := "ACKNXT" @@ -3324,10 +3163,7 @@ func TestJetStreamAckNext(t *testing.T) { } func TestJetStreamPublishDeDupe(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() mname := "DeDupe" @@ -3487,10 +3323,7 @@ func getPubAckResponse(msg []byte) *JSPubAckResponse { } func TestJetStreamPublishExpect(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() mname := "EXPECT" @@ -3592,10 +3425,7 @@ func TestJetStreamPublishExpect(t *testing.T) { } func TestJetStreamPullConsumerRemoveInterest(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() mname := "MYS-PULL" @@ -3678,10 +3508,7 @@ func TestJetStreamPullConsumerRemoveInterest(t *testing.T) { } func TestJetStreamConsumerRateLimit(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() mname := "RATELIMIT" @@ -3755,10 +3582,7 @@ func TestJetStreamConsumerRateLimit(t *testing.T) { } func TestJetStreamEphemeralConsumerRecoveryAfterServerRestart(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() mname := "MYS" @@ -3857,10 +3681,7 @@ func TestJetStreamEphemeralConsumerRecoveryAfterServerRestart(t *testing.T) { } func TestJetStreamConsumerMaxDeliveryAndServerRestart(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() mname := "MYS" @@ -3997,10 +3818,7 @@ func TestJetStreamConsumerMaxDeliveryAndServerRestart(t *testing.T) { } func TestJetStreamDeleteConsumerAndServerRestart(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() sendSubj := "MYQ" @@ -4047,10 +3865,7 @@ func TestJetStreamDeleteConsumerAndServerRestart(t *testing.T) { } func TestJetStreamRedeliveryAfterServerRestart(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() sendSubj := "MYQ" @@ -4123,10 +3938,7 @@ func TestJetStreamRedeliveryAfterServerRestart(t *testing.T) { } func TestJetStreamSnapshots(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() mname := "MY-STREAM" @@ -4232,12 +4044,9 @@ func TestJetStreamSnapshots(t *testing.T) { } // Now try restoring to a different - s2 := RunBasicJetStreamServer() + s2 := RunBasicJetStreamServer(t) defer s2.Shutdown() - if config := s2.JetStreamConfig(); config != nil && config.StoreDir != "" { - defer removeDir(t, config.StoreDir) - } acc = s2.GlobalAccount() r.Reset(snapshot) mset, err = acc.RestoreStream(&info.cfg, r) @@ -4272,7 +4081,7 @@ func TestJetStreamSnapshotsAPI(t *testing.T) { opts := DefaultTestOptions opts.ServerName = "S" opts.Port = -1 - tdir := createDir(t, "jstests-storedir-") + tdir := t.TempDir() opts.JetStream = true opts.JetStreamDomain = "domain" opts.StoreDir = tdir @@ -4639,10 +4448,7 @@ func TestJetStreamPubAckPerf(t *testing.T) { // Comment out to run, holding place for now. t.SkipNow() - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -4667,10 +4473,7 @@ func TestJetStreamPubPerfWithFullStream(t *testing.T) { // Comment out to run, holding place for now. t.SkipNow() - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -4705,10 +4508,7 @@ func TestJetStreamSnapshotsAPIPerf(t *testing.T) { // Comment out to run, holding place for now. t.SkipNow() - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() cfg := StreamConfig{ @@ -4785,13 +4585,9 @@ func TestJetStreamActiveDelivery(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil && config.StoreDir != "" { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -4844,13 +4640,9 @@ func TestJetStreamEphemeralConsumers(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -4922,13 +4714,9 @@ func TestJetStreamConsumerReconnect(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -5033,13 +4821,9 @@ func TestJetStreamDurableConsumerReconnect(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -5145,13 +4929,9 @@ func TestJetStreamDurableConsumerReconnectWithOnlyPending(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -5246,13 +5026,9 @@ func TestJetStreamDurableFilteredSubjectConsumerReconnect(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -5395,13 +5171,9 @@ func TestJetStreamConsumerInactiveNoDeadlock(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -5455,13 +5227,9 @@ func TestJetStreamMetadata(t *testing.T) { for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -5562,13 +5330,9 @@ func TestJetStreamRedeliverCount(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -5625,10 +5389,7 @@ func TestJetStreamRedeliverCount(t *testing.T) { // late with no interest the redelivery attempt is removed and we do // not get the message back. func TestJetStreamRedeliverAndLateAck(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() mset, err := s.GlobalAccount().addStream(&StreamConfig{Name: "LA", Storage: MemoryStorage}) @@ -5667,10 +5428,7 @@ func TestJetStreamRedeliverAndLateAck(t *testing.T) { // https://github.com/nats-io/nats-server/issues/1502 func TestJetStreamPendingNextTimer(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() mset, err := s.GlobalAccount().addStream(&StreamConfig{Name: "NT", Storage: MemoryStorage, Subjects: []string{"ORDERS.*"}}) @@ -5723,13 +5481,9 @@ func TestJetStreamCanNotNakAckd(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -5801,13 +5555,9 @@ func TestJetStreamStreamPurge(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -5863,13 +5613,9 @@ func TestJetStreamStreamPurgeWithConsumer(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -5958,13 +5704,9 @@ func TestJetStreamStreamPurgeWithConsumerAndRedelivery(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -6046,13 +5788,9 @@ func TestJetStreamInterestRetentionStream(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -6194,13 +5932,9 @@ func TestJetStreamInterestRetentionStreamWithFilteredConsumers(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -6284,13 +6018,9 @@ func TestJetStreamInterestRetentionWithWildcardsAndFilteredConsumers(t *testing. } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -6340,13 +6070,9 @@ func TestJetStreamInterestRetentionStreamWithDurableRestart(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -6490,13 +6216,9 @@ func TestJetStreamConsumerReplayRate(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -6611,13 +6333,9 @@ func TestJetStreamConsumerReplayRateNoAck(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -6673,13 +6391,9 @@ func TestJetStreamConsumerReplayQuit(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -7091,10 +6805,7 @@ func TestJetStreamSystemLimitsPlacement(t *testing.T) { } func TestJetStreamStreamLimitUpdate(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() err := s.GlobalAccount().UpdateJetStreamLimits(map[string]JetStreamAccountLimits{ @@ -7131,10 +6842,7 @@ func TestJetStreamStreamLimitUpdate(t *testing.T) { } func TestJetStreamStreamStorageTrackingAndLimits(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() gacc := s.GlobalAccount() @@ -7267,10 +6975,7 @@ func TestJetStreamStreamStorageTrackingAndLimits(t *testing.T) { } func TestJetStreamStreamFileTrackingAndLimits(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() gacc := s.GlobalAccount() @@ -7389,10 +7094,7 @@ func TestJetStreamStreamFileTrackingAndLimits(t *testing.T) { } func TestJetStreamTieredLimits(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() gacc := s.GlobalAccount() @@ -7444,10 +7146,7 @@ type info struct { func TestJetStreamSimpleFileRecovery(t *testing.T) { base := runtime.NumGoroutine() - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() acc := s.GlobalAccount() @@ -7560,10 +7259,7 @@ func TestJetStreamSimpleFileRecovery(t *testing.T) { } func TestJetStreamPushConsumerFlowControl(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -7663,10 +7359,7 @@ func TestJetStreamPushConsumerFlowControl(t *testing.T) { } func TestJetStreamFlowControlRequiresHeartbeats(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -7686,10 +7379,7 @@ func TestJetStreamFlowControlRequiresHeartbeats(t *testing.T) { } func TestJetStreamPushConsumerIdleHeartbeats(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -7759,10 +7449,7 @@ func TestJetStreamPushConsumerIdleHeartbeats(t *testing.T) { } func TestJetStreamPushConsumerIdleHeartbeatsWithFilterSubject(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -7821,10 +7508,7 @@ func TestJetStreamPushConsumerIdleHeartbeatsWithFilterSubject(t *testing.T) { } func TestJetStreamPushConsumerIdleHeartbeatsWithNoInterest(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -7883,10 +7567,7 @@ func TestJetStreamPushConsumerIdleHeartbeatsWithNoInterest(t *testing.T) { } func TestJetStreamInfoAPIWithHeaders(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -7913,10 +7594,7 @@ func TestJetStreamInfoAPIWithHeaders(t *testing.T) { } func TestJetStreamRequestAPI(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -8432,10 +8110,7 @@ func TestJetStreamRequestAPI(t *testing.T) { } func TestJetStreamFilteredStreamNames(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -8506,13 +8181,9 @@ func TestJetStreamUpdateStream(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil && config.StoreDir != "" { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -8731,13 +8402,9 @@ func TestJetStreamDeleteMsg(t *testing.T) { for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil && config.StoreDir != "" { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -8897,10 +8564,7 @@ func TestJetStreamLimitLockBug(t *testing.T) { for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil && config.StoreDir != "" { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() mset, err := s.GlobalAccount().addStream(c.mconfig) @@ -8948,10 +8612,7 @@ func TestJetStreamNextMsgNoInterest(t *testing.T) { for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() cfg := &StreamConfig{Name: "foo", Storage: FileStorage} @@ -9035,13 +8696,9 @@ func TestJetStreamMsgHeaders(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -9115,10 +8772,7 @@ func TestJetStreamMsgHeaders(t *testing.T) { } func TestJetStreamTemplateBasics(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() acc := s.GlobalAccount() @@ -9186,10 +8840,7 @@ func TestJetStreamTemplateBasics(t *testing.T) { } func TestJetStreamTemplateFileStoreRecovery(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() acc := s.GlobalAccount() @@ -9385,10 +9036,7 @@ func clientConnectToServerWithUP(t *testing.T, opts *Options, user, pass string) } func TestJetStreamCanNotEnableOnSystemAccount(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() sa := s.SystemAccount() @@ -9415,7 +9063,6 @@ func TestJetStreamMultipleAccountsBasics(t *testing.T) { }, } `)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) if config := s.JetStreamConfig(); config != nil { @@ -9573,7 +9220,6 @@ func TestJetStreamServerResourcesConfig(t *testing.T) { listen: 127.0.0.1:-1 jetstream: {max_mem_store: 2GB, max_file_store: 1TB} `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -9605,7 +9251,6 @@ func TestJetStreamStoreDirectoryFix(t *testing.T) { defer removeDir(t, sd) conf := createConfFile(t, []byte(fmt.Sprintf("listen: 127.0.0.1:-1\njetstream: {store_dir: %q}\n", sd))) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -9663,10 +9308,7 @@ func TestJetStreamStoreDirectoryFix(t *testing.T) { } func TestJetStreamPushConsumersPullError(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -9700,10 +9342,7 @@ func TestJetStreamPushConsumersPullError(t *testing.T) { } func TestJetStreamPullConsumerMaxWaitingOfOne(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -9752,10 +9391,7 @@ func TestJetStreamPullConsumerMaxWaitingOfOne(t *testing.T) { } func TestJetStreamPullConsumerMaxWaiting(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -9791,10 +9427,7 @@ func TestJetStreamPubPerf(t *testing.T) { // Comment out to run, holding place for now. t.SkipNow() - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() acc := s.GlobalAccount() @@ -9856,10 +9489,7 @@ func TestJetStreamPubWithAsyncResponsePerf(t *testing.T) { // Comment out to run, holding place for now. t.SkipNow() - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() acc := s.GlobalAccount() @@ -9895,10 +9525,7 @@ func TestJetStreamPubWithSyncPerf(t *testing.T) { // Comment out to run, holding place for now. t.SkipNow() - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -9926,10 +9553,7 @@ func TestJetStreamConsumerPerf(t *testing.T) { // Comment out to run, holding place for now. t.SkipNow() - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() acc := s.GlobalAccount() @@ -9987,10 +9611,7 @@ func TestJetStreamConsumerAckFileStorePerf(t *testing.T) { // Comment out to run, holding place for now. t.SkipNow() - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() acc := s.GlobalAccount() @@ -10057,10 +9678,7 @@ func TestJetStreamPubSubPerf(t *testing.T) { // Comment out to run, holding place for now. t.SkipNow() - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() acc := s.GlobalAccount() @@ -10135,13 +9753,9 @@ func TestJetStreamAckExplicitMsgRemoval(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -10279,7 +9893,7 @@ func TestJetStreamAckExplicitMsgRemoval(t *testing.T) { // should the stream later be edited to expand into more subjects the consumer // still gets what was actually requested func TestJetStreamConsumerFilterSubject(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() sc := &StreamConfig{Name: "MY_STREAM", Subjects: []string{"foo"}} @@ -10329,10 +9943,7 @@ func TestJetStreamStoredMsgsDontDisappearAfterCacheExpiration(t *testing.T) { Retention: InterestPolicy, } - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() mset, err := s.GlobalAccount().addStreamWithStore(sc, &FileStoreConfig{BlockSize: 128, CacheExpire: 15 * time.Millisecond}) @@ -10425,13 +10036,9 @@ func TestJetStreamConsumerUpdateRedelivery(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -10597,13 +10204,9 @@ func TestJetStreamConsumerMaxAckPending(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -10725,13 +10328,9 @@ func TestJetStreamPullConsumerMaxAckPending(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -10822,13 +10421,9 @@ func TestJetStreamPullConsumerMaxAckPendingRedeliveries(t *testing.T) { } for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -11032,7 +10627,6 @@ func TestJetStreamAccountImportBasics(t *testing.T) { }, } `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) if config := s.JetStreamConfig(); config != nil { @@ -11160,7 +10754,6 @@ func TestJetStreamAccountImportAll(t *testing.T) { }, } `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) if config := s.JetStreamConfig(); config != nil { @@ -11229,7 +10822,6 @@ func TestJetStreamServerReload(t *testing.T) { no_auth_user: ub system_account: SYS `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) if config := s.JetStreamConfig(); config != nil { @@ -11294,6 +10886,7 @@ func TestJetStreamServerReload(t *testing.T) { func TestJetStreamConfigReloadWithGlobalAccount(t *testing.T) { template := ` + listen: 127.0.0.1:-1 authorization { users [ {user: anonymous} @@ -11304,7 +10897,6 @@ func TestJetStreamConfigReloadWithGlobalAccount(t *testing.T) { jetstream: enabled ` conf := createConfFile(t, []byte(fmt.Sprintf(template, "pwd"))) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) if config := s.JetStreamConfig(); config != nil { @@ -11384,13 +10976,9 @@ func TestJetStreamMaxMsgsPerSubject(t *testing.T) { for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) if err != nil { t.Fatalf("Unexpected error adding stream: %v", err) @@ -11666,10 +11254,7 @@ func TestJetStreamLastSequenceBySubject(t *testing.T) { } func TestJetStreamFilteredConsumersWithWiderFilter(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -11721,10 +11306,7 @@ func TestJetStreamFilteredConsumersWithWiderFilter(t *testing.T) { } func TestJetStreamMirrorAndSourcesFilteredConsumers(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -11816,10 +11398,7 @@ func TestJetStreamMirrorAndSourcesFilteredConsumers(t *testing.T) { } func TestJetStreamMirrorBasics(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -11975,10 +11554,7 @@ func TestJetStreamMirrorBasics(t *testing.T) { } func TestJetStreamMirrorUpdatePreventsSubjects(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -11998,10 +11574,7 @@ func TestJetStreamMirrorUpdatePreventsSubjects(t *testing.T) { } func TestJetStreamSourceBasics(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -12221,7 +11794,6 @@ func TestJetStreamServerDomainConfig(t *testing.T) { listen: 127.0.0.1:-1 jetstream: {domain: "HUB"} `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -12244,7 +11816,6 @@ func TestJetStreamServerDomainConfigButDisabled(t *testing.T) { listen: 127.0.0.1:-1 jetstream: {domain: "HUB", enabled: false} `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -12264,7 +11835,6 @@ func TestJetStreamDomainInPubAck(t *testing.T) { listen: 127.0.0.1:-1 jetstream: {domain: "HUB"} `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) config := s.JetStreamConfig() @@ -12299,10 +11869,7 @@ func TestJetStreamDomainInPubAck(t *testing.T) { // Issue #2213 func TestJetStreamDirectConsumersBeingReported(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -12372,10 +11939,7 @@ func TestJetStreamDirectConsumersBeingReported(t *testing.T) { // https://github.com/nats-io/nats-server/issues/2290 func TestJetStreamTemplatedErrorsBug(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -12414,11 +11978,9 @@ func TestJetStreamServerEncryption(t *testing.T) { listen: 127.0.0.1:-1 jetstream: {key: $JS_KEY, store_dir: '%s' %s} ` - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() conf := createConfFile(t, []byte(fmt.Sprintf(tmpl, storeDir, c.cstr))) - defer removeFile(t, conf) os.Setenv("JS_KEY", "s3cr3t!!") defer os.Unsetenv("JS_KEY") @@ -12575,7 +12137,7 @@ func TestJetStreamServerEncryption(t *testing.T) { } // Run new server w/o encryption. Make sure we can restore properly (meaning encryption was stripped etc). - ns := RunBasicJetStreamServer() + ns := RunBasicJetStreamServer(t) defer ns.Shutdown() nacc := ns.GlobalAccount() @@ -12613,10 +12175,7 @@ func TestJetStreamServerEncryption(t *testing.T) { // User report of bug. func TestJetStreamConsumerBadNumPending(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -12696,10 +12255,7 @@ func TestJetStreamConsumerBadNumPending(t *testing.T) { func TestJetStreamDeliverLastPerSubject(t *testing.T) { for _, st := range []StorageType{FileStorage, MemoryStorage} { t.Run(st.String(), func(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -12835,10 +12391,7 @@ func TestJetStreamDeliverLastPerSubject(t *testing.T) { } func TestJetStreamDeliverLastPerSubjectNumPending(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -12883,10 +12436,7 @@ func TestJetStreamDeliverLastPerSubjectNumPending(t *testing.T) { // We had a report of a consumer delete crashing the server when in interest retention mode. // This I believe is only really possible in clustered mode, but we will force the issue here. func TestJetStreamConsumerCleanupWithRetentionPolicy(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -12952,10 +12502,7 @@ func TestJetStreamConsumerCleanupWithRetentionPolicy(t *testing.T) { // Issue #2392 func TestJetStreamPurgeEffectsConsumerDelivery(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -13003,10 +12550,7 @@ func TestJetStreamPurgeEffectsConsumerDelivery(t *testing.T) { // Issue #2403 func TestJetStreamExpireCausesDeadlock(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -13071,10 +12615,7 @@ func TestJetStreamConsumerPendingBugWithKV(t *testing.T) { for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client based API @@ -13118,10 +12659,7 @@ func TestJetStreamConsumerPendingBugWithKV(t *testing.T) { // Issue #2420 func TestJetStreamDefaultMaxMsgsPer(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -13144,10 +12682,7 @@ func TestJetStreamDefaultMaxMsgsPer(t *testing.T) { // Issue #2423 func TestJetStreamBadConsumerCreateErr(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -13179,11 +12714,7 @@ func TestJetStreamBadConsumerCreateErr(t *testing.T) { } func TestJetStreamConsumerPushBound(t *testing.T) { - s := RunBasicJetStreamServer() - config := s.JetStreamConfig() - if config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -13286,11 +12817,7 @@ func TestJetStreamConsumerPushBound(t *testing.T) { // Got a report of memory leaking, tracked it to internal clients for consumers. func TestJetStreamConsumerInternalClientLeak(t *testing.T) { - s := RunBasicJetStreamServer() - config := s.JetStreamConfig() - if config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -13347,11 +12874,7 @@ func TestJetStreamConsumerInternalClientLeak(t *testing.T) { } func TestJetStreamConsumerEventingRaceOnShutdown(t *testing.T) { - s := RunBasicJetStreamServer() - config := s.JetStreamConfig() - if config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s, nats.NoReconnect()) @@ -13387,11 +12910,7 @@ func TestJetStreamConsumerEventingRaceOnShutdown(t *testing.T) { // Got a report of streams that expire all messages while the server is down report errors when clients reconnect // and try to send new messages. func TestJetStreamExpireAllWhileServerDown(t *testing.T) { - s := RunBasicJetStreamServer() - config := s.JetStreamConfig() - if config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -13442,11 +12961,7 @@ func TestJetStreamExpireAllWhileServerDown(t *testing.T) { } func TestJetStreamLongStreamNamesAndPubAck(t *testing.T) { - s := RunBasicJetStreamServer() - config := s.JetStreamConfig() - if config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -13466,11 +12981,7 @@ func TestJetStreamPerSubjectPending(t *testing.T) { for _, st := range []nats.StorageType{nats.FileStorage, nats.MemoryStorage} { t.Run(st.String(), func(t *testing.T) { - s := RunBasicJetStreamServer() - config := s.JetStreamConfig() - if config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -13523,11 +13034,7 @@ func TestJetStreamPerSubjectPending(t *testing.T) { } func TestJetStreamPublishExpectNoMsg(t *testing.T) { - s := RunBasicJetStreamServer() - config := s.JetStreamConfig() - if config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -13571,11 +13078,7 @@ func TestJetStreamPublishExpectNoMsg(t *testing.T) { } func TestJetStreamPullLargeBatchExpired(t *testing.T) { - s := RunBasicJetStreamServer() - config := s.JetStreamConfig() - if config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -13617,11 +13120,7 @@ func TestJetStreamPullLargeBatchExpired(t *testing.T) { } func TestJetStreamNegativeDupeWindow(t *testing.T) { - s := RunBasicJetStreamServer() - config := s.JetStreamConfig() - if config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -13650,11 +13149,7 @@ func TestJetStreamNegativeDupeWindow(t *testing.T) { // Issue #2551 func TestJetStreamMirroredConsumerFailAfterRestart(t *testing.T) { - s := RunBasicJetStreamServer() - config := s.JetStreamConfig() - if config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -13737,10 +13232,8 @@ func TestJetStreamDisabledLimitsEnforcementJWT(t *testing.T) { claim.Limits.JetStreamLimits = limits1 aJwt1, err := claim.Encode(oKp) require_NoError(t, err) - dir := createDir(t, "srv") - defer removeDir(t, dir) - storeDir1 := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir1) + dir := t.TempDir() + storeDir1 := t.TempDir() conf := createConfFile(t, []byte(fmt.Sprintf(` listen: -1 jetstream: {store_dir: '%s'} @@ -13751,7 +13244,6 @@ func TestJetStreamDisabledLimitsEnforcementJWT(t *testing.T) { } system_account: %s `, storeDir1, ojwt, dir, sysPub))) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() updateJwt(s.ClientURL(), sysKp, aPub, aJwt1) @@ -13769,7 +13261,7 @@ func TestJetStreamDisabledLimitsEnforcementJWT(t *testing.T) { } func TestJetStreamDisabledLimitsEnforcement(t *testing.T) { - storeDir1 := createDir(t, JetStreamStoreDir) + storeDir1 := t.TempDir() conf1 := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 jetstream: {max_mem_store: 256MB, max_file_store: 2GB, store_dir: '%s'} @@ -13803,11 +13295,7 @@ func TestJetStreamDisabledLimitsEnforcement(t *testing.T) { } func TestJetStreamConsumerNoMsgPayload(t *testing.T) { - s := RunBasicJetStreamServer() - config := s.JetStreamConfig() - if config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -13849,11 +13337,7 @@ func TestJetStreamConsumerNoMsgPayload(t *testing.T) { // Issue #2607 func TestJetStreamPurgeAndFilteredConsumers(t *testing.T) { - s := RunBasicJetStreamServer() - config := s.JetStreamConfig() - if config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -13918,11 +13402,7 @@ func TestJetStreamPurgeAndFilteredConsumers(t *testing.T) { // Issue #2662 func TestJetStreamLargeExpiresAndServerRestart(t *testing.T) { - s := RunBasicJetStreamServer() - config := s.JetStreamConfig() - if config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -13971,11 +13451,7 @@ func TestJetStreamLargeExpiresAndServerRestart(t *testing.T) { // Bug that was reported showing memstore not handling max per subject of 1. func TestJetStreamMessagePerSubjectKeepBug(t *testing.T) { test := func(t *testing.T, keep int64, store nats.StorageType) { - s := RunBasicJetStreamServer() - config := s.JetStreamConfig() - if config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -14013,11 +13489,7 @@ func TestJetStreamMessagePerSubjectKeepBug(t *testing.T) { } func TestJetStreamInvalidDeliverSubject(t *testing.T) { - s := RunBasicJetStreamServer() - config := s.JetStreamConfig() - if config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -14033,7 +13505,7 @@ func TestJetStreamInvalidDeliverSubject(t *testing.T) { } func TestJetStreamMemoryCorruption(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -14097,12 +13569,8 @@ func TestJetStreamMemoryCorruption(t *testing.T) { } func TestJetStreamRecoverBadStreamSubjects(t *testing.T) { - s := RunBasicJetStreamServer() - config := s.JetStreamConfig() - if config != nil { - defer removeDir(t, config.StoreDir) - } - sd := config.StoreDir + s := RunBasicJetStreamServer(t) + sd := s.JetStreamConfig().StoreDir s.Shutdown() f := filepath.Join(sd, "$G", "streams", "TEST") @@ -14129,13 +13597,9 @@ func TestJetStreamRecoverBadStreamSubjects(t *testing.T) { } func TestJetStreamRecoverBadMirrorConfigWithSubjects(t *testing.T) { - s := RunBasicJetStreamServer() - config := s.JetStreamConfig() - if config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() - sd := config.StoreDir + sd := s.JetStreamConfig().StoreDir // Client for API requests. nc, js := jsClientConnect(t, s) @@ -14194,7 +13658,6 @@ func TestJetStreamCrossAccountsDeliverSubjectInterest(t *testing.T) { }, } `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) if config := s.JetStreamConfig(); config != nil { @@ -14255,10 +13718,7 @@ func TestJetStreamCrossAccountsDeliverSubjectInterest(t *testing.T) { } func TestJetStreamPullConsumerRequestCleanup(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -14296,10 +13756,7 @@ func TestJetStreamPullConsumerRequestCleanup(t *testing.T) { } func TestJetStreamPullConsumerRequestMaximums(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, _ := jsClientConnect(t, s) @@ -14351,10 +13808,7 @@ func TestJetStreamPullConsumerRequestMaximums(t *testing.T) { } func TestJetStreamEphemeralPullConsumers(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -14419,10 +13873,7 @@ func TestJetStreamEphemeralPullConsumers(t *testing.T) { } func TestJetStreamEphemeralPullConsumersInactiveThresholdAndNoWait(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -14475,7 +13926,6 @@ func TestJetStreamPullConsumerCrossAccountExpires(t *testing.T) { }, } `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) if config := s.JetStreamConfig(); config != nil { @@ -14677,7 +14127,6 @@ func TestJetStreamPullConsumerCrossAccountExpiresNoDataRace(t *testing.T) { }, } `)) - defer removeFile(t, conf) test := func() { s, _ := RunServerWithConfig(conf) @@ -14753,7 +14202,6 @@ func TestJetStreamPullConsumerCrossAccountsAndLeafNodes(t *testing.T) { } leaf { listen: "127.0.0.1:-1" } `)) - defer removeFile(t, conf) s, o := RunServerWithConfig(conf) if config := s.JetStreamConfig(); config != nil { @@ -14777,7 +14225,6 @@ func TestJetStreamPullConsumerCrossAccountsAndLeafNodes(t *testing.T) { # bind local A to IU account on other side of LN. leaf { remotes [ { url: nats://mh:bar@127.0.0.1:%d; account: A } ] } `, o.LeafNode.Port))) - defer removeFile(t, conf2) s2, _ := RunServerWithConfig(conf2) defer s2.Shutdown() @@ -14853,10 +14300,7 @@ func TestJetStreamPullConsumerCrossAccountsAndLeafNodes(t *testing.T) { // They expect to wait up to a given time for any messages but will return once they have any to deliver, so parital fills. // 4. Try, which never waits at all ever. func TestJetStreamPullConsumersOneShotBehavior(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -14964,10 +14408,7 @@ func TestJetStreamPullConsumersOneShotBehavior(t *testing.T) { } func TestJetStreamPullConsumersMultipleRequestsExpireOutOfOrder(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -15022,10 +14463,7 @@ func TestJetStreamPullConsumersMultipleRequestsExpireOutOfOrder(t *testing.T) { } func TestJetStreamConsumerUpdateSurvival(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -15073,10 +14511,7 @@ func TestJetStreamConsumerUpdateSurvival(t *testing.T) { } func TestJetStreamNakRedeliveryWithNoWait(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -15165,13 +14600,9 @@ func TestJetStreamMaxMsgsPerSubjectWithDiscardNew(t *testing.T) { for _, c := range cases { t.Run(c.name, func(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } - mset, err := s.GlobalAccount().addStream(c.mconfig) require_NoError(t, err) defer mset.delete() @@ -15220,10 +14651,7 @@ func TestJetStreamMaxMsgsPerSubjectWithDiscardNew(t *testing.T) { } func TestJetStreamStreamInfoSubjectsDetails(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -15283,10 +14711,7 @@ func TestJetStreamStreamInfoSubjectsDetails(t *testing.T) { } func TestJetStreamStreamInfoSubjectsDetailsWithDeleteAndPurge(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -15372,10 +14797,7 @@ func TestJetStreamStreamInfoSubjectsDetailsWithDeleteAndPurge(t *testing.T) { } func TestJetStreamStreamInfoSubjectsDetailsAfterRestart(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -15432,10 +14854,7 @@ func TestJetStreamStreamInfoSubjectsDetailsAfterRestart(t *testing.T) { // Issue #2836 func TestJetStreamInterestRetentionBug(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -15480,10 +14899,7 @@ func TestJetStreamInterestRetentionBug(t *testing.T) { // pending, but when we sent the next message and got blocked, if that msg would // exceed the outstanding FC we would become stalled. func TestJetStreamFlowControlStall(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -15509,10 +14925,7 @@ func TestJetStreamFlowControlStall(t *testing.T) { } func TestJetStreamConsumerPendingCountWithRedeliveries(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -15575,10 +14988,7 @@ func TestJetStreamConsumerPendingCountWithRedeliveries(t *testing.T) { } func TestJetStreamPullConsumerHeartBeats(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -15704,14 +15114,10 @@ func TestJetStreamStorageReservedBytes(t *testing.T) { opts.JetStream = true opts.JetStreamMaxMemory = systemLimit opts.JetStreamMaxStore = systemLimit - tdir, _ := os.MkdirTemp(tempRoot, "jstests-storedir-") - opts.StoreDir = tdir + opts.StoreDir = t.TempDir() opts.HTTPPort = -1 s := RunServer(&opts) - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } defer s.Shutdown() // Client for API requests. @@ -15911,10 +15317,7 @@ func TestJetStreamStorageReservedBytes(t *testing.T) { } func TestJetStreamRecoverStreamWithDeletedMessagesNonCleanShutdown(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -15955,10 +15358,7 @@ func TestJetStreamRecoverStreamWithDeletedMessagesNonCleanShutdown(t *testing.T) } func TestJetStreamRestoreBadStream(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, _ := jsClientConnect(t, s) @@ -16015,10 +15415,7 @@ func TestJetStreamRestoreBadStream(t *testing.T) { } func TestJetStreamConsumerAckSampling(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -16100,10 +15497,7 @@ func TestJetStreamConsumerAckSampling(t *testing.T) { } func TestJetStreamConsumerAckSamplingSpecifiedUsingUpdateConsumer(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -16154,10 +15548,7 @@ func TestJetStreamConsumerAckSamplingSpecifiedUsingUpdateConsumer(t *testing.T) } func TestJetStreamConsumerMaxDeliverUpdate(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -16222,25 +15613,21 @@ func TestJetStreamRemoveExternalSource(t *testing.T) { lu, err := url.Parse(fmt.Sprintf("nats://127.0.0.1:%d", ho.LeafNode.Port)) require_NoError(t, err) - tdir, _ := os.MkdirTemp(tempRoot, "jstests-storedir-") - defer removeDir(t, tdir) lo1 := DefaultTestOptions lo1.Port = 4111 //-1 lo1.ServerName = "a-leaf" lo1.JetStream = true - lo1.StoreDir = tdir + lo1.StoreDir = t.TempDir() lo1.JetStreamDomain = "a-leaf" lo1.LeafNode.Remotes = []*RemoteLeafOpts{{URLs: []*url.URL{lu}}} l1 := RunServer(&lo1) defer l1.Shutdown() - tdir, _ = os.MkdirTemp(tempRoot, "jstests-storedir-") - defer removeDir(t, tdir) lo2 := DefaultTestOptions lo2.Port = 2111 //-1 lo2.ServerName = "b-leaf" lo2.JetStream = true - lo2.StoreDir = tdir + lo2.StoreDir = t.TempDir() lo2.JetStreamDomain = "b-leaf" lo2.LeafNode.Remotes = []*RemoteLeafOpts{{URLs: []*url.URL{lu}}} l2 := RunServer(&lo2) @@ -16399,10 +15786,7 @@ func TestJetStreamRemoveExternalSource(t *testing.T) { } func TestJetStreamAddStreamWithFilestoreFailure(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Cause failure to create stream with filestore. @@ -16429,10 +15813,7 @@ func (s *checkFastState) FastState(state *StreamState) { } func TestJetStreamBackOffCheckPending(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() mset, err := s.GlobalAccount().addStream(&StreamConfig{Name: "TEST", Subjects: []string{"foo"}}) @@ -16495,6 +15876,7 @@ func TestJetStreamBackOffCheckPending(t *testing.T) { func TestJetStreamCrossAccounts(t *testing.T) { conf := createConfFile(t, []byte(` + listen: 127.0.0.1:-1 jetstream: enabled accounts: { A: { @@ -16515,7 +15897,6 @@ func TestJetStreamCrossAccounts(t *testing.T) { ] } }`)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) if config := s.JetStreamConfig(); config != nil { defer removeDir(t, config.StoreDir) @@ -16740,13 +16121,11 @@ func TestJetStreamInvalidRestoreRequests(t *testing.T) { test(t, s, 3) }) t.Run("single", func(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() conf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 jetstream: {max_mem_store: 2MB, max_file_store: 8MB, store_dir: '%s'} %s`, storeDir, commonAccSection))) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() test(t, s, 1) @@ -16856,10 +16235,8 @@ func TestJetStreamLimits(t *testing.T) { $SYS { users = [ { user: "admin", pass: "s3cr3t!" } ] } }` limitsTest := func(t *testing.T, tmpl string) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() conf := createConfFile(t, []byte(fmt.Sprintf(tmpl, storeDir))) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() require_True(t, opts.JetStreamLimits.Duplicates == time.Minute) @@ -16931,13 +16308,11 @@ func TestJetStreamConsumerStreamUpdate(t *testing.T) { }) }) t.Run("single", func(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() conf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 jetstream: {max_mem_store: 2MB, max_file_store: 8MB, store_dir: '%s'}`, storeDir))) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() test(t, s, 1) @@ -16945,8 +16320,7 @@ func TestJetStreamConsumerStreamUpdate(t *testing.T) { } func TestJetStreamImportReload(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() conf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 @@ -16962,7 +16336,6 @@ func TestJetStreamImportReload(t *testing.T) { imports: [{stream: {subject: news.>, account: account_a}}] } }`, storeDir))) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -17008,10 +16381,7 @@ func TestJetStreamImportReload(t *testing.T) { } func TestJetStreamRecoverSealedAfterServerRestart(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -17073,7 +16443,6 @@ func TestJetStreamImportConsumerStreamSubjectRemapSingle(t *testing.T) { }, } `)) - defer removeFile(t, conf) test := func(t *testing.T, queue bool) { s, _ := RunServerWithConfig(conf) @@ -17159,10 +16528,7 @@ func TestJetStreamImportConsumerStreamSubjectRemapSingle(t *testing.T) { } func TestJetStreamWorkQueueSourceRestart(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -17261,10 +16627,7 @@ func TestJetStreamWorkQueueSourceRestart(t *testing.T) { } func TestJetStreamWorkQueueSourceNamingRestart(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -17365,10 +16728,7 @@ func TestJetStreamWorkQueueSourceNamingRestart(t *testing.T) { } func TestJetStreamDisabledHealthz(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() if !s.JetStreamEnabled() { @@ -17386,10 +16746,7 @@ func TestJetStreamDisabledHealthz(t *testing.T) { } func TestJetStreamPullMaxBytes(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -17503,10 +16860,7 @@ func TestJetStreamPullMaxBytes(t *testing.T) { } func TestJetStreamStreamRepublishCycle(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, _ := jsClientConnect(t, s) @@ -17559,10 +16913,7 @@ func TestJetStreamStreamRepublishCycle(t *testing.T) { } func TestJetStreamStreamRepublishOneTokenMatch(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -17604,10 +16955,7 @@ func TestJetStreamStreamRepublishOneTokenMatch(t *testing.T) { } func TestJetStreamStreamRepublishMultiTokenMatch(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -17649,10 +16997,7 @@ func TestJetStreamStreamRepublishMultiTokenMatch(t *testing.T) { } func TestJetStreamStreamRepublishAnySubjectMatch(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -17693,10 +17038,7 @@ func TestJetStreamStreamRepublishAnySubjectMatch(t *testing.T) { } func TestJetStreamStreamRepublishMultiTokenNoMatch(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -17733,10 +17075,7 @@ func TestJetStreamStreamRepublishMultiTokenNoMatch(t *testing.T) { } func TestJetStreamStreamRepublishOneTokenNoMatch(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -17773,10 +17112,7 @@ func TestJetStreamStreamRepublishOneTokenNoMatch(t *testing.T) { } func TestJetStreamStreamRepublishHeadersOnly(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -17820,10 +17156,7 @@ func TestJetStreamStreamRepublishHeadersOnly(t *testing.T) { } func TestJetStreamConsumerDeliverNewNotConsumingBeforeRestart(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -17892,10 +17225,7 @@ func TestJetStreamConsumerDeliverNewNotConsumingBeforeRestart(t *testing.T) { } func TestJetStreamConsumerNumPendingWithMaxPerSubjectGreaterThanOne(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -17946,10 +17276,7 @@ func TestJetStreamConsumerNumPendingWithMaxPerSubjectGreaterThanOne(t *testing.T } func TestJetStreamMsgGetNoAdvisory(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -17977,10 +17304,7 @@ func TestJetStreamMsgGetNoAdvisory(t *testing.T) { } func TestJetStreamDirectMsgGet(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, _ := jsClientConnect(t, s) @@ -18072,10 +17396,7 @@ func TestJetStreamDirectMsgGet(t *testing.T) { // This allows support for a get next given a sequence as a starting. // This allows these to be chained together if needed for sparse streams. func TestJetStreamDirectMsgGetNext(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, _ := jsClientConnect(t, s) @@ -18133,10 +17454,7 @@ func TestJetStreamDirectMsgGetNext(t *testing.T) { } func TestJetStreamConsumerAndStreamNamesWithPathSeparators(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -18159,10 +17477,7 @@ func TestJetStreamConsumerAndStreamNamesWithPathSeparators(t *testing.T) { } func TestJetStreamConsumerUpdateFilterSubject(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -18228,10 +17543,7 @@ func TestJetStreamConsumerUpdateFilterSubject(t *testing.T) { // So after a message is delivered, the request, if still outstanding, effectively // goes to the end of the queue of requests pending. func TestJetStreamConsumerPullConsumerFIFO(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -18285,10 +17597,7 @@ func TestJetStreamConsumerPullConsumerFIFO(t *testing.T) { // Make sure that when we reach an ack limit that we follow one shot semantics. func TestJetStreamConsumerPullConsumerOneShotOnMaxAckLimit(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -18322,10 +17631,7 @@ func TestJetStreamConsumerPullConsumerOneShotOnMaxAckLimit(t *testing.T) { /////////////////////////////////////////////////////////////////////////// func Benchmark__JetStreamPubWithAck(b *testing.B) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer os.RemoveAll(config.StoreDir) - } + s := RunBasicJetStreamServer(b) defer s.Shutdown() mset, err := s.GlobalAccount().addStream(&StreamConfig{Name: "foo"}) @@ -18353,10 +17659,7 @@ func Benchmark__JetStreamPubWithAck(b *testing.B) { } func Benchmark____JetStreamPubNoAck(b *testing.B) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer os.RemoveAll(config.StoreDir) - } + s := RunBasicJetStreamServer(b) defer s.Shutdown() mset, err := s.GlobalAccount().addStream(&StreamConfig{Name: "foo"}) @@ -18387,10 +17690,7 @@ func Benchmark____JetStreamPubNoAck(b *testing.B) { } func Benchmark_JetStreamPubAsyncAck(b *testing.B) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer os.RemoveAll(config.StoreDir) - } + s := RunBasicJetStreamServer(b) defer s.Shutdown() mset, err := s.GlobalAccount().addStream(&StreamConfig{Name: "foo"}) @@ -18443,10 +17743,7 @@ func Benchmark____JetStreamSubNoAck(b *testing.B) { return } - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer os.RemoveAll(config.StoreDir) - } + s := RunBasicJetStreamServer(b) defer s.Shutdown() mname := "foo" @@ -18504,10 +17801,7 @@ func benchJetStreamWorkersAndBatch(b *testing.B, numWorkers, batchSize int) { return } - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer os.RemoveAll(config.StoreDir) - } + s := RunBasicJetStreamServer(b) defer s.Shutdown() mname := "MSET22" @@ -18598,10 +17892,7 @@ func TestJetStreamKVMemoryStorePerf(t *testing.T) { // Comment out to run, holding place for now. t.SkipNow() - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -18636,10 +17927,7 @@ func TestJetStreamKVMemoryStoreDirectGetPerf(t *testing.T) { // Comment out to run, holding place for now. t.SkipNow() - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -18677,10 +17965,7 @@ func TestJetStreamKVMemoryStoreDirectGetPerf(t *testing.T) { func TestJetStreamMultiplePullPerf(t *testing.T) { skip(t) - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -18758,10 +18043,7 @@ func TestJetStreamMultiplePullPerf(t *testing.T) { } func TestJetStreamMirrorUpdatesNotSupported(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -18801,7 +18083,6 @@ func TestJetStreamDirectGetBySubject(t *testing.T) { }, } `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) if config := s.JetStreamConfig(); config != nil { @@ -18886,10 +18167,7 @@ func TestJetStreamDirectGetBySubject(t *testing.T) { } func TestJetStreamProperErrorDueToOverlapSubjects(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() c := createJetStreamClusterExplicit(t, "R3S", 3) @@ -18932,12 +18210,10 @@ func TestJetStreamServerCipherConvert(t *testing.T) { listen: 127.0.0.1:-1 jetstream: {key: s3cr3t, store_dir: '%s', cipher: %s} ` - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() // Create a stream and a consumer under one cipher, and restart the server with a new cipher. conf := createConfFile(t, []byte(fmt.Sprintf(tmpl, storeDir, "AES"))) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -18977,7 +18253,6 @@ func TestJetStreamServerCipherConvert(t *testing.T) { s.Shutdown() conf = createConfFile(t, []byte(fmt.Sprintf(tmpl, storeDir, "ChaCha"))) - defer removeFile(t, conf) s, _ = RunServerWithConfig(conf) defer s.Shutdown() @@ -19009,10 +18284,7 @@ func TestJetStreamServerCipherConvert(t *testing.T) { } func TestJetStreamConsumerDeliverNewMaxRedeliveriesAndServerRestart(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -19068,10 +18340,7 @@ func TestJetStreamConsumerDeliverNewMaxRedeliveriesAndServerRestart(t *testing.T } func TestJetStreamConsumerPendingLowerThanStreamFirstSeq(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -19141,10 +18410,7 @@ func TestJetStreamConsumerPendingLowerThanStreamFirstSeq(t *testing.T) { } func TestJetStreamAllowDirectAfterUpdate(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -19183,10 +18449,7 @@ func TestJetStreamAllowDirectAfterUpdate(t *testing.T) { // Bug when stream's consumer config does not force filestore to track per subject information. func TestJetStreamConsumerEOFBugNewFileStore(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -19272,7 +18535,6 @@ func TestJetStreamSubjectBasedFilteredConsumers(t *testing.T) { }, } `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) if config := s.JetStreamConfig(); config != nil { @@ -19373,10 +18635,7 @@ func TestJetStreamSubjectBasedFilteredConsumers(t *testing.T) { } func TestJetStreamStreamSubjectsOverlap(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -19404,10 +18663,7 @@ func TestJetStreamStreamSubjectsOverlap(t *testing.T) { } func TestJetStreamSuppressAllowDirect(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -19438,10 +18694,7 @@ func TestJetStreamSuppressAllowDirect(t *testing.T) { } func TestJetStreamPullConsumerNoAck(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -19464,17 +18717,14 @@ func TestJetStreamAccountPurge(t *testing.T) { sysKp, syspub := createKey(t) sysJwt := encodeClaim(t, jwt.NewAccountClaims(syspub), syspub) sysCreds := newUser(t, sysKp) - defer removeFile(t, sysCreds) accKp, accpub := createKey(t) accClaim := jwt.NewAccountClaims(accpub) accClaim.Limits.JetStreamLimits.DiskStorage = 1024 * 1024 * 5 accClaim.Limits.JetStreamLimits.MemoryStorage = 1024 * 1024 * 5 accJwt := encodeClaim(t, accClaim, accpub) accCreds := newUser(t, accKp) - defer removeFile(t, accCreds) - storeDir := createDir(t, _EMPTY_) - defer os.RemoveAll(storeDir) + storeDir := t.TempDir() cfg := createConfFile(t, []byte(fmt.Sprintf(` host: 127.0.0.1 @@ -19553,10 +18803,7 @@ func TestJetStreamAccountPurge(t *testing.T) { } func TestJetStreamPullConsumerLastPerSubjectRedeliveries(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -19604,10 +18851,7 @@ func TestJetStreamPullConsumerLastPerSubjectRedeliveries(t *testing.T) { } func TestJetStreamPullConsumersTimeoutHeaders(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -19707,10 +18951,7 @@ func TestJetStreamPullConsumersTimeoutHeaders(t *testing.T) { // For issue https://github.com/nats-io/nats-server/issues/3612 // Do auto cleanup. func TestJetStreamDanglingMessageAutoCleanup(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -19779,10 +19020,7 @@ func TestJetStreamDanglingMessageAutoCleanup(t *testing.T) { // Issue https://github.com/nats-io/nats-server/issues/3645 func TestJetStreamMsgIDHeaderCollision(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -19835,10 +19073,7 @@ func TestJetStreamMsgIDHeaderCollision(t *testing.T) { // https://github.com/nats-io/nats-server/issues/3657 func TestJetStreamServerCrashOnPullConsumerDeleteWithInactiveThresholdAfterAck(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. diff --git a/server/jwt_test.go b/server/jwt_test.go index e00d3248..6467e9b3 100644 --- a/server/jwt_test.go +++ b/server/jwt_test.go @@ -41,8 +41,6 @@ var ( // This matches ./configs/nkeys/op.jwt ojwt = "eyJ0eXAiOiJqd3QiLCJhbGciOiJlZDI1NTE5In0.eyJhdWQiOiJURVNUUyIsImV4cCI6MTg1OTEyMTI3NSwianRpIjoiWE5MWjZYWVBIVE1ESlFSTlFPSFVPSlFHV0NVN01JNVc1SlhDWk5YQllVS0VRVzY3STI1USIsImlhdCI6MTU0Mzc2MTI3NSwiaXNzIjoiT0NBVDMzTVRWVTJWVU9JTUdOR1VOWEo2NkFIMlJMU0RBRjNNVUJDWUFZNVFNSUw2NU5RTTZYUUciLCJuYW1lIjoiU3luYWRpYSBDb21tdW5pY2F0aW9ucyBJbmMuIiwibmJmIjoxNTQzNzYxMjc1LCJzdWIiOiJPQ0FUMzNNVFZVMlZVT0lNR05HVU5YSjY2QUgyUkxTREFGM01VQkNZQVk1UU1JTDY1TlFNNlhRRyIsInR5cGUiOiJvcGVyYXRvciIsIm5hdHMiOnsic2lnbmluZ19rZXlzIjpbIk9EU0tSN01ZRlFaNU1NQUo2RlBNRUVUQ1RFM1JJSE9GTFRZUEpSTUFWVk40T0xWMllZQU1IQ0FDIiwiT0RTS0FDU1JCV1A1MzdEWkRSVko2NTdKT0lHT1BPUTZLRzdUNEhONk9LNEY2SUVDR1hEQUhOUDIiLCJPRFNLSTM2TFpCNDRPWTVJVkNSNlA1MkZaSlpZTVlXWlZXTlVEVExFWjVUSzJQTjNPRU1SVEFCUiJdfX0.hyfz6E39BMUh0GLzovFfk3wT4OfualftjdJ_eYkLfPvu5tZubYQ_Pn9oFYGCV_6yKy3KMGhWGUCyCdHaPhalBw" oKp nkeys.KeyPair - - tempRoot = filepath.Join(os.TempDir(), "nats-server") ) func init() { @@ -1583,7 +1581,6 @@ func TestJWTAccountURLResolver(t *testing.T) { } ` conf := createConfFile(t, []byte(fmt.Sprintf(confTemplate, ojwt, ts.URL))) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) pub, _ := kp.PublicKey() @@ -1629,7 +1626,6 @@ func TestJWTAccountURLResolverTimeout(t *testing.T) { resolver: URL("%s%s") ` conf := createConfFile(t, []byte(fmt.Sprintf(confTemplate, ts.URL, basePath))) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) pub, _ := kp.PublicKey() @@ -1666,7 +1662,6 @@ func TestJWTAccountURLResolverNoFetchOnReload(t *testing.T) { resolver: URL("%s/ngs/v1/accounts/jwt/") ` conf := createConfFile(t, []byte(fmt.Sprintf(confTemplate, ojwt, ts.URL))) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -1773,7 +1768,6 @@ func TestJWTAccountURLResolverFetchFailureInServer1(t *testing.T) { operator: %s resolver: URL("%s/A/") `, ojwt, ts.URL))) - defer removeFile(t, confA) sA := RunServer(LoadConfig(confA)) defer sA.Shutdown() // server observed one fetch on startup @@ -1871,7 +1865,6 @@ func TestJWTAccountURLResolverFetchFailurePushReorder(t *testing.T) { resolver: URL("%s/A/") system_account: %s `, ojwt, ts.URL, syspub))) - defer removeFile(t, confA) sA := RunServer(LoadConfig(confA)) defer sA.Shutdown() // server observed one fetch on startup @@ -1972,7 +1965,6 @@ func TestJWTAccountURLResolverPermanentFetchFailure(t *testing.T) { resolver: URL("%s/A/") system_account: %s `, ojwt, ts.URL, syspub))) - defer removeFile(t, confA) o := LoadConfig(confA) sA := RunServer(o) defer sA.Shutdown() @@ -2059,7 +2051,6 @@ func TestJWTAccountURLResolverFetchFailureInCluster(t *testing.T) { t.Fatalf("Error generating user JWT: %v", err) } creds := genCredsFile(t, uJwt, uSeed) - defer removeFile(t, creds) // Simulate an account server that drops the first request to /B/acc chanImpA := make(chan struct{}, 4) defer close(chanImpA) @@ -2110,7 +2101,6 @@ func TestJWTAccountURLResolverFetchFailureInCluster(t *testing.T) { listen: 127.0.0.1:-1 } `, ojwt, ts.URL))) - defer removeFile(t, confA) sA := RunServer(LoadConfig(confA)) defer sA.Shutdown() // Create Server B (using no_advertise to prevent failover) @@ -2127,7 +2117,6 @@ func TestJWTAccountURLResolverFetchFailureInCluster(t *testing.T) { ] } `, ojwt, ts.URL, sA.opts.Cluster.Port))) - defer removeFile(t, confB) sB := RunServer(LoadConfig(confB)) defer sB.Shutdown() // startup cluster @@ -2215,7 +2204,6 @@ func TestJWTAccountURLResolverReturnDifferentOperator(t *testing.T) { t.Fatalf("Error generating user JWT: %v", err) } creds := genCredsFile(t, uJwt, uSeed) - defer removeFile(t, creds) // Simulate an account server that was hijacked/mis configured ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Write([]byte(ajwt)) @@ -2227,7 +2215,6 @@ func TestJWTAccountURLResolverReturnDifferentOperator(t *testing.T) { operator: %s resolver: URL("%s/A/") `, ojwt, ts.URL))) - defer removeFile(t, confA) sA, _ := RunServerWithConfig(confA) defer sA.Shutdown() // Create first client, directly connects to A @@ -3154,11 +3141,10 @@ func TestJWTBearerWithBadIssuerToken(t *testing.T) { func TestJWTExpiredUserCredentialsRenewal(t *testing.T) { createTmpFile := func(t *testing.T, content []byte) string { t.Helper() - conf := createFile(t, "") + conf := createTempFile(t, "") fName := conf.Name() conf.Close() if err := os.WriteFile(fName, content, 0666); err != nil { - removeFile(t, fName) t.Fatalf("Error writing conf file: %v", err) } return fName @@ -3212,7 +3198,6 @@ func TestJWTExpiredUserCredentialsRenewal(t *testing.T) { t.Fatalf("Error encoding credentials: %v", err) } chainedFile := createTmpFile(t, creds) - defer removeFile(t, chainedFile) rch := make(chan bool) @@ -3321,25 +3306,10 @@ func require_JWTEqual(t *testing.T, dir string, pub string, jwt string) { require_Equal(t, string(content), jwt) } -func createDir(t testing.TB, prefix string) string { +func createTempFile(t testing.TB, prefix string) *os.File { t.Helper() - err := os.MkdirAll(tempRoot, 0700) - require_NoError(t, err) - dir, err := os.MkdirTemp(tempRoot, prefix) - require_NoError(t, err) - return dir -} - -func createFile(t testing.TB, prefix string) *os.File { - t.Helper() - err := os.MkdirAll(tempRoot, 0700) - require_NoError(t, err) - return createFileAtDir(t, tempRoot, prefix) -} - -func createFileAtDir(t testing.TB, dir, prefix string) *os.File { - t.Helper() - f, err := os.CreateTemp(dir, prefix) + tempDir := t.TempDir() + f, err := os.CreateTemp(tempDir, prefix) require_NoError(t, err) return f } @@ -3459,18 +3429,10 @@ func TestJWTAccountNATSResolverFetch(t *testing.T) { for i := 0; i < cap(doneChan); i++ { <-doneChan } - defer removeFile(t, sysCreds) - defer removeFile(t, aCreds) - defer removeFile(t, bCreds) - defer removeFile(t, cCreds) - defer removeFile(t, dCreds) // Create one directory for each server - dirA := createDir(t, "srv-a") - defer removeDir(t, dirA) - dirB := createDir(t, "srv-b") - defer removeDir(t, dirB) - dirC := createDir(t, "srv-c") - defer removeDir(t, dirC) + dirA := t.TempDir() + dirB := t.TempDir() + dirC := t.TempDir() // simulate a restart of the server by storing files in them // Server A/B will completely sync, so after startup each server // will contain the union off all stored/configured jwt @@ -3499,7 +3461,6 @@ func TestJWTAccountNATSResolverFetch(t *testing.T) { no_advertise: true } `, ojwt, syspub, dirA, cpub, cjwt1))) - defer removeFile(t, confA) sA, _ := RunServerWithConfig(confA) defer sA.Shutdown() // during startup resolver_preload causes the directory to contain data @@ -3526,7 +3487,6 @@ func TestJWTAccountNATSResolverFetch(t *testing.T) { ] } `, ojwt, syspub, dirB, sA.opts.Cluster.Port))) - defer removeFile(t, confB) sB, _ := RunServerWithConfig(confB) defer sB.Shutdown() // Create Server C (using no_advertise to prevent fail over) @@ -3551,9 +3511,7 @@ func TestJWTAccountNATSResolverFetch(t *testing.T) { } ` confClongTTL := createConfFile(t, []byte(fmt.Sprintf(fmtC, ojwt, syspub, dirC, 10000, sA.opts.Cluster.Port))) - defer removeFile(t, confClongTTL) confCshortTTL := createConfFile(t, []byte(fmt.Sprintf(fmtC, ojwt, syspub, dirC, 1000, sA.opts.Cluster.Port))) - defer removeFile(t, confCshortTTL) sC, _ := RunServerWithConfig(confClongTTL) // use long ttl to assure it is not kicking defer sC.Shutdown() // startup cluster @@ -3703,18 +3661,11 @@ func TestJWTAccountNATSResolverCrossClusterFetch(t *testing.T) { for i := 0; i < cap(doneChan); i++ { <-doneChan } - defer removeFile(t, sysCreds) - defer removeFile(t, aCreds) - defer removeFile(t, bCreds) // Create one directory for each server - dirAA := createDir(t, "srv-a-a") - defer removeDir(t, dirAA) - dirAB := createDir(t, "srv-a-b") - defer removeDir(t, dirAB) - dirBA := createDir(t, "srv-b-a") - defer removeDir(t, dirBA) - dirBB := createDir(t, "srv-b-b") - defer removeDir(t, dirBB) + dirAA := t.TempDir() + dirAB := t.TempDir() + dirBA := t.TempDir() + dirBB := t.TempDir() // simulate a restart of the server by storing files in them // Server AA & AB will completely sync // Server BA & BB will completely sync @@ -3742,7 +3693,6 @@ func TestJWTAccountNATSResolverCrossClusterFetch(t *testing.T) { no_advertise: true } `, ojwt, syspub, dirAA))) - defer removeFile(t, confAA) sAA, _ := RunServerWithConfig(confAA) defer sAA.Shutdown() // Create Server B (using no_advertise to prevent fail over) @@ -3769,7 +3719,6 @@ func TestJWTAccountNATSResolverCrossClusterFetch(t *testing.T) { ] } `, ojwt, syspub, dirAB, sAA.opts.Cluster.Port))) - defer removeFile(t, confAB) sAB, _ := RunServerWithConfig(confAB) defer sAB.Shutdown() // Create Server C (using no_advertise to prevent fail over) @@ -3796,7 +3745,6 @@ func TestJWTAccountNATSResolverCrossClusterFetch(t *testing.T) { no_advertise: true } `, ojwt, syspub, dirBA, sAA.opts.Gateway.Port))) - defer removeFile(t, confBA) sBA, _ := RunServerWithConfig(confBA) defer sBA.Shutdown() // Create Sever BA (using no_advertise to prevent fail over) @@ -3826,7 +3774,6 @@ func TestJWTAccountNATSResolverCrossClusterFetch(t *testing.T) { ] } `, ojwt, syspub, dirBB, sBA.opts.Cluster.Port, sAA.opts.Cluster.Port))) - defer removeFile(t, confBB) sBB, _ := RunServerWithConfig(confBB) defer sBB.Shutdown() // Assert topology @@ -3917,7 +3864,6 @@ func TestJWTUserLimits(t *testing.T) { %s: %s } `, ojwt, aPub, aJwt))) - defer removeFile(t, conf) sA, _ := RunServerWithConfig(conf) defer sA.Shutdown() for _, v := range []struct { @@ -3952,7 +3898,6 @@ func TestJWTUserLimits(t *testing.T) { } { t.Run("", func(t *testing.T) { creds := createUserWithLimit(t, kp, doNotExpire, v.f) - defer removeFile(t, creds) if c, err := nats.Connect(sA.ClientURL(), nats.UserCredentials(creds)); err == nil { c.Close() if !v.pass { @@ -3985,7 +3930,6 @@ func TestJWTTimeExpiration(t *testing.T) { %s: %s } `, ojwt, aPub, aJwt))) - defer removeFile(t, conf) sA, _ := RunServerWithConfig(conf) defer sA.Shutdown() for _, l := range []string{"", "Europe/Berlin", "America/New_York"} { @@ -4001,7 +3945,6 @@ func TestJWTTimeExpiration(t *testing.T) { j.Locale = l } }) - defer removeFile(t, creds) disconnectChan := make(chan struct{}) defer close(disconnectChan) errChan := make(chan struct{}) @@ -4038,7 +3981,6 @@ func TestJWTTimeExpiration(t *testing.T) { creds := createUserWithLimit(t, kp, doNotExpire, func(j *jwt.UserPermissionLimits) { j.Times = []jwt.TimeRange{newTimeRange(start1, validFor), newTimeRange(start2, validFor)} }) - defer removeFile(t, creds) errChan := make(chan struct{}) defer close(errChan) reConnectChan := make(chan struct{}) @@ -4075,7 +4017,6 @@ func TestJWTTimeExpiration(t *testing.T) { t.Run("lower jwt expiration overwrites time", func(t *testing.T) { start := time.Now() creds := createUserWithLimit(t, kp, start.Add(validFor), func(j *jwt.UserPermissionLimits) { j.Times = []jwt.TimeRange{newTimeRange(start, 2*validFor)} }) - defer removeFile(t, creds) disconnectChan := make(chan struct{}) defer close(disconnectChan) errChan := make(chan struct{}) @@ -4145,7 +4086,6 @@ func TestJWTSysImportForDifferentAccount(t *testing.T) { %s: %s } `, ojwt, sysPub, sysPub, sysJwt, aPub, aJwt))) - defer removeFile(t, conf) sA, _ := RunServerWithConfig(conf) defer sA.Shutdown() @@ -4199,7 +4139,6 @@ func TestJWTSysImportFromNothing(t *testing.T) { %s: %s } `, ojwt, sysPub, sysPub, sysJwt, aPub, aJwt))) - defer removeFile(t, conf) sA, _ := RunServerWithConfig(conf) defer sA.Shutdown() @@ -4263,7 +4202,6 @@ func TestJWTSysImportOverwritePublic(t *testing.T) { %s: %s } `, ojwt, sysPub, sysPub, sysJwt, aPub, aJwt))) - defer removeFile(t, conf) sA, _ := RunServerWithConfig(conf) defer sA.Shutdown() @@ -4309,7 +4247,6 @@ func TestJWTSysImportOverwriteToken(t *testing.T) { %s: %s } `, ojwt, sysPub, sysPub, sysJwt, aPub, aJwt))) - defer removeFile(t, conf) sA, _ := RunServerWithConfig(conf) defer sA.Shutdown() @@ -4336,14 +4273,12 @@ func TestJWTLimits(t *testing.T) { %s: %s } `, ojwt, aPub, aJwt))) - defer removeFile(t, conf) sA, _ := RunServerWithConfig(conf) defer sA.Shutdown() errChan := make(chan struct{}) defer close(errChan) t.Run("subs", func(t *testing.T) { creds := createUserWithLimit(t, kp, doNotExpire, func(j *jwt.UserPermissionLimits) { j.Subs = 1 }) - defer removeFile(t, creds) c := natsConnect(t, sA.ClientURL(), nats.UserCredentials(creds), nats.DisconnectErrHandler(func(conn *nats.Conn, err error) { if e := conn.LastError(); e != nil && strings.Contains(e.Error(), "maximum subscriptions exceeded") { @@ -4362,7 +4297,6 @@ func TestJWTLimits(t *testing.T) { }) t.Run("payload", func(t *testing.T) { creds := createUserWithLimit(t, kp, doNotExpire, func(j *jwt.UserPermissionLimits) { j.Payload = 5 }) - defer removeFile(t, creds) c := natsConnect(t, sA.ClientURL(), nats.UserCredentials(creds)) defer c.Close() if err := c.Flush(); err != nil { @@ -4449,7 +4383,6 @@ func TestJWTLimitsTemplate(t *testing.T) { %s: %s } `, ojwt, aPub, aJwt))) - defer removeFile(t, conf) sA, _ := RunServerWithConfig(conf) defer sA.Shutdown() errChan := make(chan struct{}) @@ -4468,8 +4401,6 @@ func TestJWTLimitsTemplate(t *testing.T) { require_NoError(t, err) creds := genCredsFile(t, ujwt, seed) - defer removeFile(t, creds) - t.Run("pass", func(t *testing.T) { c := natsConnect(t, sA.ClientURL(), nats.UserCredentials(creds)) defer c.Close() @@ -4508,7 +4439,6 @@ func TestJWTNoOperatorMode(t *testing.T) { defer sA.Shutdown() kp, _ := nkeys.CreateAccount() creds := createUserWithLimit(t, kp, time.Now().Add(time.Hour), nil) - defer removeFile(t, creds) url := sA.ClientURL() if login { url = fmt.Sprintf("nats://u:pwd@%s:%d", sA.opts.Host, sA.opts.Port) @@ -4576,12 +4506,7 @@ func TestJWTUserRevocation(t *testing.T) { for i := 0; i < cap(doneChan); i++ { <-doneChan } - defer removeFile(t, sysCreds) - defer removeFile(t, dummyCreds) - defer removeFile(t, aCreds1) - defer removeFile(t, aCreds2) - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) + dirSrv := t.TempDir() conf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 operator: %s @@ -4591,7 +4516,6 @@ func TestJWTUserRevocation(t *testing.T) { dir: '%s' } `, ojwt, syspub, dirSrv))) - defer removeFile(t, conf) srv, _ := RunServerWithConfig(conf) defer srv.Shutdown() updateJwt(t, srv.ClientURL(), sysCreds, sysjwt, 1) // update system account jwt @@ -4646,7 +4570,6 @@ func TestJWTActivationRevocation(t *testing.T) { sysKp, syspub := createKey(t) sysJwt := encodeClaim(t, jwt.NewAccountClaims(syspub), syspub) sysCreds := newUser(t, sysKp) - defer removeFile(t, sysCreds) aExpKp, aExpPub := createKey(t) aExpClaim := jwt.NewAccountClaims(aExpPub) @@ -4689,11 +4612,8 @@ func TestJWTActivationRevocation(t *testing.T) { }) aImpJwt := encodeClaim(t, aImpClaim, aImpPub) aImpCreds := newUser(t, aImpKp) - defer removeFile(t, aExpCreds) - defer removeFile(t, aImpCreds) - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) + dirSrv := t.TempDir() conf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 operator: %s @@ -4703,7 +4623,6 @@ func TestJWTActivationRevocation(t *testing.T) { dir: '%s' } `, ojwt, syspub, dirSrv))) - defer removeFile(t, conf) t.Run("token-expired-on-connect", func(t *testing.T) { srv, _ := RunServerWithConfig(conf) @@ -4800,12 +4719,9 @@ func TestJWTAccountFetchTimeout(t *testing.T) { t.Run("", func(t *testing.T) { var syspub, sysjwt, sysCreds string createAccountAndUser(&syspub, &sysjwt, &sysCreds) - defer removeFile(t, sysCreds) var apub, ajwt1, aCreds1 string createAccountAndUser(&apub, &ajwt1, &aCreds1) - defer removeFile(t, aCreds1) - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) + dirSrv := t.TempDir() conf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 operator: %s @@ -4816,7 +4732,6 @@ func TestJWTAccountFetchTimeout(t *testing.T) { dir: '%s' } `, ojwt, syspub, cfg, dirSrv))) - defer removeFile(t, conf) srv, _ := RunServerWithConfig(conf) defer srv.Shutdown() updateJwt(t, srv.ClientURL(), sysCreds, sysjwt, 1) // update system account jwt @@ -4882,12 +4797,9 @@ func TestJWTAccountOps(t *testing.T) { t.Run("", func(t *testing.T) { var syspub, sysjwt, sysCreds string createAccountAndUser(&syspub, &sysjwt, &sysCreds) - defer removeFile(t, sysCreds) var apub, ajwt1, aCreds1 string createAccountAndUser(&apub, &ajwt1, &aCreds1) - defer removeFile(t, aCreds1) - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) + dirSrv := t.TempDir() conf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 operator: %s @@ -4899,7 +4811,6 @@ func TestJWTAccountOps(t *testing.T) { `, opJwt, syspub, cfg, dirSrv))) disconnectErrChan := make(chan struct{}, 1) defer close(disconnectErrChan) - defer removeFile(t, conf) srv, _ := RunServerWithConfig(conf) defer srv.Shutdown() updateJwt(t, srv.ClientURL(), sysCreds, sysjwt, 1) // update system account jwt @@ -4989,7 +4900,6 @@ func TestJWTHeader(t *testing.T) { sysKp, syspub := createKey(t) sysJwt := encodeClaim(t, jwt.NewAccountClaims(syspub), syspub) sysCreds := newUser(t, sysKp) - defer removeFile(t, sysCreds) test := func(share bool) { aExpKp, aExpPub := createKey(t) @@ -5006,7 +4916,6 @@ func TestJWTHeader(t *testing.T) { }) aExpJwt := encodeClaim(t, aExpClaim, aExpPub) aExpCreds := newUser(t, aExpKp) - defer removeFile(t, aExpCreds) aImpKp, aImpPub := createKey(t) aImpClaim := jwt.NewAccountClaims(aImpPub) @@ -5019,10 +4928,8 @@ func TestJWTHeader(t *testing.T) { }) aImpJwt := encodeClaim(t, aImpClaim, aImpPub) aImpCreds := newUser(t, aImpKp) - defer removeFile(t, aImpCreds) - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) + dirSrv := t.TempDir() conf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 operator: %s @@ -5032,7 +4939,6 @@ func TestJWTHeader(t *testing.T) { dir: '%s' } `, ojwt, syspub, dirSrv))) - defer removeFile(t, conf) srv, _ := RunServerWithConfig(conf) defer srv.Shutdown() updateJwt(t, srv.ClientURL(), sysCreds, sysJwt, 1) // update system account jwt @@ -5121,7 +5027,6 @@ func TestJWTAccountImportsWithWildcardSupport(t *testing.T) { system_account: %s %s `, ojwt, aExpPub, aExpJwt, aImpPub, aImpJwt, aSysPub, aSysJwt, aSysPub, jsSetting))) - defer removeFile(t, cf) s, opts := RunServerWithConfig(cf) defer s.Shutdown() @@ -5175,7 +5080,6 @@ func TestJWTAccountImportsWithWildcardSupport(t *testing.T) { } t.Run("To", func(t *testing.T) { aExpPub, aExpJwt, aExpCreds := createExporter() - defer removeFile(t, aExpCreds) aImpKp, aImpPub := createKey(t) aImpClaim := jwt.NewAccountClaims(aImpPub) aImpClaim.Name = "Import" @@ -5192,14 +5096,12 @@ func TestJWTAccountImportsWithWildcardSupport(t *testing.T) { }) aImpJwt := encodeClaim(t, aImpClaim, aImpPub) aImpCreds := newUser(t, aImpKp) - defer removeFile(t, aImpCreds) test(aExpPub, aExpJwt, aExpCreds, aImpPub, aImpJwt, aImpCreds, false, "$request.1.$in.2.bar", "$events.1.$in.2.bar", "my.request.1.2.bar", "prefix.$events.1.$in.2.bar") }) t.Run("LocalSubject-No-Reorder", func(t *testing.T) { aExpPub, aExpJwt, aExpCreds := createExporter() - defer removeFile(t, aExpCreds) aImpKp, aImpPub := createKey(t) aImpClaim := jwt.NewAccountClaims(aImpPub) aImpClaim.Name = "Import" @@ -5216,7 +5118,6 @@ func TestJWTAccountImportsWithWildcardSupport(t *testing.T) { }) aImpJwt := encodeClaim(t, aImpClaim, aImpPub) aImpCreds := newUser(t, aImpKp) - defer removeFile(t, aImpCreds) test(aExpPub, aExpJwt, aExpCreds, aImpPub, aImpJwt, aImpCreds, false, "$request.1.$in.2.bar", "$events.1.$in.2.bar", "my.request.1.2.bar", "my.events.1.2.bar") @@ -5225,7 +5126,6 @@ func TestJWTAccountImportsWithWildcardSupport(t *testing.T) { for _, jsEnabled := range []bool{false, true} { t.Run(fmt.Sprintf("%t", jsEnabled), func(t *testing.T) { aExpPub, aExpJwt, aExpCreds := createExporter() - defer removeFile(t, aExpCreds) aImpKp, aImpPub := createKey(t) aImpClaim := jwt.NewAccountClaims(aImpPub) aImpClaim.Name = "Import" @@ -5242,7 +5142,6 @@ func TestJWTAccountImportsWithWildcardSupport(t *testing.T) { }) aImpJwt := encodeClaim(t, aImpClaim, aImpPub) aImpCreds := newUser(t, aImpKp) - defer removeFile(t, aImpCreds) test(aExpPub, aExpJwt, aExpCreds, aImpPub, aImpJwt, aImpCreds, jsEnabled, "$request.2.$in.1.bar", "$events.1.$in.2.bar", "my.request.1.2.bar", "my.events.2.1.bar") @@ -5255,7 +5154,6 @@ func TestJWTAccountTokenImportMisuse(t *testing.T) { sysKp, syspub := createKey(t) sysJwt := encodeClaim(t, jwt.NewAccountClaims(syspub), syspub) sysCreds := newUser(t, sysKp) - defer removeFile(t, sysCreds) aExpKp, aExpPub := createKey(t) aExpClaim := jwt.NewAccountClaims(aExpPub) @@ -5271,7 +5169,6 @@ func TestJWTAccountTokenImportMisuse(t *testing.T) { }) aExpJwt := encodeClaim(t, aExpClaim, aExpPub) aExpCreds := newUser(t, aExpKp) - defer removeFile(t, aExpCreds) createImportingAccountClaim := func(aImpKp nkeys.KeyPair, aExpPub string, ac *jwt.ActivationClaims) (string, string) { t.Helper() @@ -5313,7 +5210,6 @@ func TestJWTAccountTokenImportMisuse(t *testing.T) { operator: %s resolver: URL("%s/A/") `, ojwt, ts.URL))) - defer removeFile(t, cf) s, opts := RunServerWithConfig(cf) defer s.Shutdown() @@ -5325,8 +5221,7 @@ func TestJWTAccountTokenImportMisuse(t *testing.T) { testNatsResolver := func(aImpJwt string) { t.Helper() - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) + dirSrv := t.TempDir() cf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 operator: %s @@ -5353,7 +5248,6 @@ func TestJWTAccountTokenImportMisuse(t *testing.T) { ac.ImportType = jwt.Stream aImpJwt, aImpCreds := createImportingAccountClaim(aImpKp, aExpPub, ac) - defer removeFile(t, aImpCreds) testConnect(aExpPub, aExpJwt, aExpCreds, aImpPub, aImpJwt, aImpCreds) testNatsResolver(aImpJwt) }) @@ -5366,7 +5260,6 @@ func TestJWTAccountTokenImportMisuse(t *testing.T) { ac.ImportType = jwt.Stream aImpJwt, aImpCreds := createImportingAccountClaim(aImpKp, aExpPub, ac) - defer removeFile(t, aImpCreds) testConnect(aExpPub, aExpJwt, aExpCreds, aImpPub, aImpJwt, aImpCreds) testNatsResolver(aImpJwt) }) @@ -5379,7 +5272,6 @@ func TestJWTAccountTokenImportMisuse(t *testing.T) { ac.ImportType = jwt.Stream aImpJwt, aImpCreds := createImportingAccountClaim(aImpKp, aExpPub, ac) - defer removeFile(t, aImpCreds) testConnect(aExpPub, aExpJwt, aExpCreds, aImpPub, aImpJwt, aImpCreds) testNatsResolver(aImpJwt) }) @@ -5398,7 +5290,6 @@ func TestJWTResponseThreshold(t *testing.T) { aExpJwt := encodeClaim(t, aExpClaim, aExpPub) aExpCreds := newUser(t, aExpKp) - defer removeFile(t, aExpCreds) aImpKp, aImpPub := createKey(t) aImpClaim := jwt.NewAccountClaims(aImpPub) aImpClaim.Name = "Import" @@ -5409,7 +5300,6 @@ func TestJWTResponseThreshold(t *testing.T) { }) aImpJwt := encodeClaim(t, aImpClaim, aImpPub) aImpCreds := newUser(t, aImpKp) - defer removeFile(t, aImpCreds) cf := createConfFile(t, []byte(fmt.Sprintf(` port: -1 @@ -5420,7 +5310,6 @@ func TestJWTResponseThreshold(t *testing.T) { %s : "%s" } `, ojwt, aExpPub, aExpJwt, aImpPub, aImpJwt))) - defer removeFile(t, cf) s, opts := RunServerWithConfig(cf) defer s.Shutdown() @@ -5461,7 +5350,6 @@ func TestJWTJetStreamTiers(t *testing.T) { sysKp, syspub := createKey(t) sysJwt := encodeClaim(t, jwt.NewAccountClaims(syspub), syspub) sysCreds := newUser(t, sysKp) - defer removeFile(t, sysCreds) accKp, accPub := createKey(t) accClaim := jwt.NewAccountClaims(accPub) @@ -5473,11 +5361,9 @@ func TestJWTJetStreamTiers(t *testing.T) { start := time.Now() - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) + dirSrv := t.TempDir() cf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 server_name: s1 @@ -5492,7 +5378,6 @@ func TestJWTJetStreamTiers(t *testing.T) { dir: '%s' } `, storeDir, ojwt, syspub, dirSrv))) - defer removeFile(t, cf) s, _ := RunServerWithConfig(cf) defer s.Shutdown() @@ -5572,7 +5457,6 @@ func TestJWTJetStreamMaxAckPending(t *testing.T) { sysKp, syspub := createKey(t) sysJwt := encodeClaim(t, jwt.NewAccountClaims(syspub), syspub) sysCreds := newUser(t, sysKp) - defer removeFile(t, sysCreds) accKp, accPub := createKey(t) accClaim := jwt.NewAccountClaims(accPub) @@ -5586,11 +5470,9 @@ func TestJWTJetStreamMaxAckPending(t *testing.T) { start := time.Now() - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) + dirSrv := t.TempDir() cf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 server_name: s1 @@ -5605,7 +5487,6 @@ func TestJWTJetStreamMaxAckPending(t *testing.T) { dir: '%s' } `, storeDir, ojwt, syspub, dirSrv))) - defer removeFile(t, cf) s, _ := RunServerWithConfig(cf) defer s.Shutdown() @@ -5654,7 +5535,6 @@ func TestJWTJetStreamMaxStreamBytes(t *testing.T) { sysKp, syspub := createKey(t) sysJwt := encodeClaim(t, jwt.NewAccountClaims(syspub), syspub) sysCreds := newUser(t, sysKp) - defer removeFile(t, sysCreds) accKp, accPub := createKey(t) accClaim := jwt.NewAccountClaims(accPub) @@ -5669,11 +5549,9 @@ func TestJWTJetStreamMaxStreamBytes(t *testing.T) { start := time.Now() - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) + dirSrv := t.TempDir() cf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 server_name: s1 @@ -5688,7 +5566,6 @@ func TestJWTJetStreamMaxStreamBytes(t *testing.T) { dir: '%s' } `, storeDir, ojwt, syspub, dirSrv))) - defer removeFile(t, cf) s, _ := RunServerWithConfig(cf) defer s.Shutdown() @@ -5770,7 +5647,6 @@ func TestJWTQueuePermissions(t *testing.T) { resolver_preload = { %s : %s }`, ojwt, aExpPub, aExpJwt))) - defer removeFile(t, confFileName) opts, err := ProcessConfigFile(confFileName) if err != nil { t.Fatalf("Received unexpected error %s", err) @@ -5794,7 +5670,6 @@ func TestJWTQueuePermissions(t *testing.T) { } { t.Run(test.permType+test.queue, func(t *testing.T) { usrCreds := newUser(t, test.permType) - defer removeFile(t, usrCreds) nc, err := nats.Connect(fmt.Sprintf("nats://127.0.0.1:%d", opts.Port), nats.ErrorHandler(func(conn *nats.Conn, s *nats.Subscription, err error) { errChan <- err @@ -5836,7 +5711,6 @@ func TestJWScopedSigningKeys(t *testing.T) { sysKp, syspub := createKey(t) sysJwt := encodeClaim(t, jwt.NewAccountClaims(syspub), syspub) sysCreds := newUser(t, sysKp) - defer removeFile(t, sysCreds) _, aExpPub := createKey(t) accClaim := jwt.NewAccountClaims(aExpPub) @@ -5854,14 +5728,10 @@ func TestJWScopedSigningKeys(t *testing.T) { accJwt := encodeClaim(t, accClaim, aExpPub) aNonScopedCreds := newUserEx(t, aSignNonScopedKp, false, aExpPub) - defer removeFile(t, aNonScopedCreds) aBadScopedCreds := newUserEx(t, aSignScopedKp, false, aExpPub) - defer removeFile(t, aBadScopedCreds) aScopedCreds := newUserEx(t, aSignScopedKp, true, aExpPub) - defer removeFile(t, aScopedCreds) - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) + dirSrv := t.TempDir() cf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 operator: %s @@ -5871,7 +5741,6 @@ func TestJWScopedSigningKeys(t *testing.T) { dir: '%s' } `, ojwt, syspub, dirSrv))) - defer removeFile(t, cf) s, opts := RunServerWithConfig(cf) defer s.Shutdown() @@ -6015,15 +5884,10 @@ func TestJWTStrictSigningKeys(t *testing.T) { require_NoError(t, err) uBadBadCreds := newUserEx(t, aBadBadKp, false, aBadPub) - defer removeFile(t, uBadBadCreds) uBadGoodCreds := newUserEx(t, aBadGoodKp, false, aBadPub) - defer removeFile(t, uBadGoodCreds) uGoodBadCreds := newUserEx(t, aGoodBadKp, false, aGoodPub) - defer removeFile(t, uGoodBadCreds) uGoodGoodCreds := newUserEx(t, aGoodGoodKp, false, aGoodPub) - defer removeFile(t, uGoodGoodCreds) uSysCreds := newUserEx(t, aSysKp, false, aSysPub) - defer removeFile(t, uSysCreds) connectTest := func(url string) { for _, test := range []struct { @@ -6046,8 +5910,7 @@ func TestJWTStrictSigningKeys(t *testing.T) { } t.Run("resolver", func(t *testing.T) { - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) + dirSrv := t.TempDir() cf := createConfFile(t, []byte(fmt.Sprintf(` port: -1 operator = %s @@ -6059,7 +5922,6 @@ func TestJWTStrictSigningKeys(t *testing.T) { %s : "%s" } `, oJwt, dirSrv, aSysPub, aSysJwt))) - defer removeFile(t, cf) s, _ := RunServerWithConfig(cf) defer s.Shutdown() url := s.ClientURL() @@ -6073,8 +5935,6 @@ func TestJWTStrictSigningKeys(t *testing.T) { }) t.Run("mem-resolver", func(t *testing.T) { - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) cf := createConfFile(t, []byte(fmt.Sprintf(` port: -1 operator = %s @@ -6085,7 +5945,6 @@ func TestJWTStrictSigningKeys(t *testing.T) { %s : "%s" } `, oJwt, aSysPub, aSysJwt, aBadPub, aBadJwt, aGoodPub, aGoodJwt))) - defer removeFile(t, cf) s, _ := RunServerWithConfig(cf) defer s.Shutdown() connectTest(s.ClientURL()) @@ -6135,7 +5994,6 @@ func TestJWTAccountProtectedImport(t *testing.T) { t.Run("pass", func(t *testing.T) { exportKp, exportPub, exportJWT, _, importKp, importPub, importJWT, srvcSub, strmSub := setupAccounts(true) cf := createConfFile(t, []byte(fmt.Sprintf(srvFmt, ojwt, exportPub, exportJWT, importPub, importJWT))) - defer removeFile(t, cf) s, _ := RunServerWithConfig(cf) defer s.Shutdown() ncExp := natsConnect(t, s.ClientURL(), createUserCreds(t, s, exportKp)) @@ -6172,7 +6030,6 @@ func TestJWTAccountProtectedImport(t *testing.T) { t.Run("fail", func(t *testing.T) { exportKp, exportPub, exportJWT, _, importKp, importPub, importJWT, srvcSub, strmSub := setupAccounts(false) cf := createConfFile(t, []byte(fmt.Sprintf(srvFmt, ojwt, exportPub, exportJWT, importPub, importJWT))) - defer removeFile(t, cf) s, _ := RunServerWithConfig(cf) defer s.Shutdown() ncExp := natsConnect(t, s.ClientURL(), createUserCreds(t, s, exportKp)) @@ -6210,15 +6067,13 @@ func TestJWTAccountProtectedImport(t *testing.T) { }) t.Run("reload-off-2-on", func(t *testing.T) { exportKp, exportPub, exportJWTOn, exportJWTOff, importKp, _, importJWT, srvcSub, strmSub := setupAccounts(false) - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) + dirSrv := t.TempDir() // set up system account. Relying bootstrapping system account to not create JWT sysAcc, err := nkeys.CreateAccount() require_NoError(t, err) sysPub, err := sysAcc.PublicKey() require_NoError(t, err) sysUsrCreds := newUserEx(t, sysAcc, false, sysPub) - defer removeFile(t, sysUsrCreds) cf := createConfFile(t, []byte(fmt.Sprintf(` port: -1 operator = %s @@ -6227,7 +6082,6 @@ func TestJWTAccountProtectedImport(t *testing.T) { type: full dir: '%s' }`, ojwt, sysPub, dirSrv))) - defer removeFile(t, cf) s, _ := RunServerWithConfig(cf) defer s.Shutdown() updateJwt(t, s.ClientURL(), sysUsrCreds, importJWT, 1) @@ -6282,7 +6136,6 @@ func TestJWTMappings(t *testing.T) { sysKp, syspub := createKey(t) sysJwt := encodeClaim(t, jwt.NewAccountClaims(syspub), syspub) sysCreds := newUser(t, sysKp) - defer removeFile(t, sysCreds) // create two jwt, one with and one without mapping aKp, aPub := createKey(t) @@ -6295,8 +6148,7 @@ func TestJWTMappings(t *testing.T) { aClaim.AddMapping("foo2", jwt.WeightedMapping{Subject: "bar2"}) aJwtMap2 := encodeClaim(t, aClaim, aPub) - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) + dirSrv := t.TempDir() conf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 operator: %s @@ -6306,7 +6158,6 @@ func TestJWTMappings(t *testing.T) { dir: '%s' } `, ojwt, syspub, dirSrv))) - defer removeFile(t, conf) srv, _ := RunServerWithConfig(conf) defer srv.Shutdown() updateJwt(t, srv.ClientURL(), sysCreds, sysJwt, 1) // update system account jwt @@ -6347,11 +6198,8 @@ func TestJWTOperatorPinnedAccounts(t *testing.T) { kps[i], pubs[i] = createKey(t) jwts[i] = encodeClaim(t, jwt.NewAccountClaims(pubs[i]), pubs[i]) } - sysCreds := newUser(t, kps[0]) // index 0 is handled as system account - defer removeFile(t, sysCreds) - - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) + // create system account user credentials, index 0 is handled as system account + newUser(t, kps[0]) cfgCommon := fmt.Sprintf(` listen: 127.0.0.1:-1 @@ -6368,7 +6216,6 @@ func TestJWTOperatorPinnedAccounts(t *testing.T) { resolver_pinned_accounts: [%s, %s] ` conf := createConfFile(t, []byte(fmt.Sprintf(cfgFmt, pubs[1], pubs[2]))) - defer removeFile(t, conf) srv, _ := RunServerWithConfig(conf) defer srv.Shutdown() @@ -6406,8 +6253,7 @@ func TestJWTOperatorPinnedAccounts(t *testing.T) { } func TestJWTNoSystemAccountButNatsResolver(t *testing.T) { - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) + dirSrv := t.TempDir() for _, resType := range []string{"full", "cache"} { t.Run(resType, func(t *testing.T) { conf := createConfFile(t, []byte(fmt.Sprintf(` @@ -6417,7 +6263,6 @@ func TestJWTNoSystemAccountButNatsResolver(t *testing.T) { type: %s dir: '%s' }`, ojwt, resType, dirSrv))) - defer removeFile(t, conf) opts := LoadConfig(conf) s, err := NewServer(opts) // Since the server cannot be stopped, since it did not start, @@ -6432,8 +6277,7 @@ func TestJWTNoSystemAccountButNatsResolver(t *testing.T) { func TestJWTAccountConnzAccessAfterClaimUpdate(t *testing.T) { skp, spub := createKey(t) - screds := newUser(t, skp) - defer removeFile(t, screds) + newUser(t, skp) sclaim := jwt.NewAccountClaims(spub) sclaim.AddMapping("foo.bar", jwt.WeightedMapping{Subject: "foo.baz"}) @@ -6441,15 +6285,13 @@ func TestJWTAccountConnzAccessAfterClaimUpdate(t *testing.T) { // create two jwt, one with and one without mapping akp, apub := createKey(t) - creds := newUser(t, akp) - defer removeFile(t, creds) + newUser(t, akp) claim := jwt.NewAccountClaims(apub) jwt1 := encodeClaim(t, claim, apub) claim.AddMapping("foo.bar", jwt.WeightedMapping{Subject: "foo.baz"}) jwt2 := encodeClaim(t, claim, apub) - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) + dirSrv := t.TempDir() conf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 @@ -6460,7 +6302,6 @@ func TestJWTAccountConnzAccessAfterClaimUpdate(t *testing.T) { dir: '%s' } `, ojwt, spub, dirSrv))) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -6523,7 +6364,6 @@ func TestAccountWeightedMappingInSuperCluster(t *testing.T) { sysClaim := jwt.NewAccountClaims(spub) sysClaim.Name = "SYS" sysCreds := newUser(t, skp) - defer removeFile(t, sysCreds) akp, apub := createKey(t) aUsr := createUserCreds(t, nil, akp) @@ -6545,7 +6385,7 @@ func TestAccountWeightedMappingInSuperCluster(t *testing.T) { sc := createJetStreamSuperClusterWithTemplateAndModHook(t, tmpl, 3, 3, func(serverName, clusterName, storeDir, conf string) string { - dirSrv := createDir(t, "srv") + dirSrv := t.TempDir() return fmt.Sprintf(`%s operator: %s system_account: %s @@ -6670,8 +6510,7 @@ func TestServerOperatorModeNoAuthRequired(t *testing.T) { require_NoError(t, err) creds := genCredsFile(t, ujwt, seed) - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) + dirSrv := t.TempDir() conf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 @@ -6689,7 +6528,6 @@ func TestServerOperatorModeNoAuthRequired(t *testing.T) { %s: %s } `, ojwt, spub, dirSrv, spub, sysJwt, apub, accJwt))) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() diff --git a/server/leafnode_test.go b/server/leafnode_test.go index bb81d85b..575bfc5f 100644 --- a/server/leafnode_test.go +++ b/server/leafnode_test.go @@ -22,7 +22,6 @@ import ( "math/rand" "net" "net/url" - "os" "strings" "sync" "sync/atomic" @@ -171,7 +170,6 @@ func TestLeafNodeTLSWithCerts(t *testing.T) { } } `)) - defer removeFile(t, conf1) s1, o1 := RunServerWithConfig(conf1) defer s1.Shutdown() @@ -195,7 +193,6 @@ func TestLeafNodeTLSWithCerts(t *testing.T) { ] } `, u.String()))) - defer removeFile(t, conf2) o2, err := ProcessConfigFile(conf2) if err != nil { t.Fatalf("Error processing config file: %v", err) @@ -226,7 +223,6 @@ func TestLeafNodeTLSRemoteWithNoCerts(t *testing.T) { } } `)) - defer removeFile(t, conf1) s1, o1 := RunServerWithConfig(conf1) defer s1.Shutdown() @@ -248,7 +244,6 @@ func TestLeafNodeTLSRemoteWithNoCerts(t *testing.T) { ] } `, u.String()))) - defer removeFile(t, conf2) o2, err := ProcessConfigFile(conf2) if err != nil { t.Fatalf("Error processing config file: %v", err) @@ -292,7 +287,6 @@ func TestLeafNodeTLSRemoteWithNoCerts(t *testing.T) { ] } `, u.String()))) - defer removeFile(t, conf3) o3, err := ProcessConfigFile(conf3) if err != nil { t.Fatalf("Error processing config file: %v", err) @@ -322,7 +316,6 @@ func TestLeafNodeTLSRemoteWithNoCerts(t *testing.T) { ] } `, u.String()))) - defer removeFile(t, conf4) o4, err := ProcessConfigFile(conf4) if err != nil { t.Fatalf("Error processing config file: %v", err) @@ -436,13 +429,11 @@ func TestLeafNodeBasicAuthFailover(t *testing.T) { } ` conf := createConfFile(t, []byte(fmt.Sprintf(content, "", fatalPassword))) - defer removeFile(t, conf) sb1, ob1 := RunServerWithConfig(conf) defer sb1.Shutdown() conf = createConfFile(t, []byte(fmt.Sprintf(content, fmt.Sprintf("routes: [nats://127.0.0.1:%d]", ob1.Cluster.Port), fatalPassword))) - defer removeFile(t, conf) sb2, _ := RunServerWithConfig(conf) defer sb2.Shutdown() @@ -465,7 +456,6 @@ func TestLeafNodeBasicAuthFailover(t *testing.T) { } ` conf = createConfFile(t, []byte(fmt.Sprintf(content, fatalPassword, ob1.LeafNode.Port))) - defer removeFile(t, conf) sa, _ := RunServerWithConfig(conf) defer sa.Shutdown() @@ -642,7 +632,6 @@ func TestLeafNodeBasicAuthSingleton(t *testing.T) { t.Run(test.name, func(t *testing.T) { conf := createConfFile(t, []byte(fmt.Sprintf(template, test.userSpec))) - defer removeFile(t, conf) s1, o1 := RunServerWithConfig(conf) defer s1.Shutdown() @@ -666,7 +655,6 @@ func TestLeafNodeBasicAuthSingleton(t *testing.T) { remotes = [ { url: "nats-leaf://%s%s:%d" } ] } `, test.lnURLCreds, o1.LeafNode.Host, o1.LeafNode.Port))) - defer removeFile(t, conf) s2, _ := RunServerWithConfig(conf) defer s2.Shutdown() @@ -725,7 +713,6 @@ func TestLeafNodeBasicAuthMultiple(t *testing.T) { } } `)) - defer removeFile(t, conf) s1, o1 := RunServerWithConfig(conf) defer s1.Shutdown() @@ -736,7 +723,6 @@ func TestLeafNodeBasicAuthMultiple(t *testing.T) { remotes = [{url: "nats-leaf://wron:user@%s:%d"}] } `, o1.LeafNode.Host, o1.LeafNode.Port))) - defer removeFile(t, conf) s2, _ := RunServerWithConfig(conf) defer s2.Shutdown() // Give a chance for s2 to attempt to connect and make sure that s1 @@ -778,7 +764,6 @@ func TestLeafNodeBasicAuthMultiple(t *testing.T) { ] } `, o1.LeafNode.Host, o1.LeafNode.Port, o1.LeafNode.Host, o1.LeafNode.Port))) - defer removeFile(t, conf) s2, o2 := RunServerWithConfig(conf) defer s2.Shutdown() @@ -824,7 +809,6 @@ func TestLeafNodeBasicAuthMultiple(t *testing.T) { ] } `, o1.LeafNode.Host, o1.LeafNode.Port))) - defer removeFile(t, conf) s3, _ := RunServerWithConfig(conf) defer s3.Shutdown() } @@ -1857,13 +1841,11 @@ func TestLeafNodeTLSVerifyAndMapCfgPass(t *testing.T) { defer close(l.triggerChan) confA := createConfFile(t, []byte(fmt.Sprintf(testLeafNodeTLSVerifyAndMapSrvA, "localhost"))) - defer removeFile(t, confA) srvA, optsA := RunServerWithConfig(confA) defer srvA.Shutdown() srvA.SetLogger(l, true, true) confB := createConfFile(t, []byte(fmt.Sprintf(testLeafNodeTLSVerifyAndMapSrvB, optsA.LeafNode.Port))) - defer removeFile(t, confB) ob := LoadConfig(confB) ob.LeafNode.ReconnectInterval = 50 * time.Millisecond srvB := RunServer(ob) @@ -1905,13 +1887,11 @@ func TestLeafNodeTLSVerifyAndMapCfgFail(t *testing.T) { // use certificate with SAN localhost, but configure the server to not accept it // instead provide a name matching the user (to be matched by failed confA := createConfFile(t, []byte(fmt.Sprintf(testLeafNodeTLSVerifyAndMapSrvA, "user-provided-in-url"))) - defer removeFile(t, confA) srvA, optsA := RunServerWithConfig(confA) defer srvA.Shutdown() srvA.SetLogger(l, true, true) confB := createConfFile(t, []byte(fmt.Sprintf(testLeafNodeTLSVerifyAndMapSrvB, optsA.LeafNode.Port))) - defer removeFile(t, confB) ob := LoadConfig(confB) ob.LeafNode.ReconnectInterval = 50 * time.Millisecond srvB := RunServer(ob) @@ -1954,7 +1934,6 @@ func TestLeafNodeOriginClusterInfo(t *testing.T) { } `, hopts.LeafNode.Port))) - defer removeFile(t, conf) opts, err := ProcessConfigFile(conf) if err != nil { t.Fatalf("Error processing config file: %v", err) @@ -1996,7 +1975,6 @@ func TestLeafNodeOriginClusterInfo(t *testing.T) { } `, hopts.LeafNode.Port))) - defer removeFile(t, conf) opts, err = ProcessConfigFile(conf) if err != nil { t.Fatalf("Error processing config file: %v", err) @@ -2237,7 +2215,6 @@ func TestLeafNodeTwoRemotesBindToSameAccount(t *testing.T) { } ` lconf := createConfFile(t, []byte(fmt.Sprintf(conf, opts.LeafNode.Port, opts.LeafNode.Port))) - defer removeFile(t, lconf) lopts, err := ProcessConfigFile(lconf) if err != nil { @@ -2537,25 +2514,9 @@ func TestLeafNodeOperatorBadCfg(t *testing.T) { require_NoError(t, err) sysAccPk, err := sysAcc.PublicKey() require_NoError(t, err) - tmpDir := createDir(t, "_nats-server") - defer removeDir(t, tmpDir) - for errorText, cfg := range map[string]string{ - "operator mode does not allow specifying user in leafnode config": ` - port: -1 - authorization { - users = [{user: "u", password: "p"}]} - }`, - `operator mode and non account nkeys are incompatible`: ` - port: -1 - authorization { - account: notankey - }`, - ("operator mode requires account nkeys in remotes. " + - "Please add an `account` key to each remote in your `leafnodes` section, to assign it to an account. " + - "Each account value should be a 56 character public key, starting with the letter 'A'"): `remotes: [{url: u}]`, - } { - t.Run(errorText, func(t *testing.T) { - conf := createConfFile(t, []byte(fmt.Sprintf(` + tmpDir := t.TempDir() + + configTmpl := ` port: -1 operator: %s system_account: %s @@ -2566,8 +2527,43 @@ func TestLeafNodeOperatorBadCfg(t *testing.T) { leafnodes: { %s } - `, ojwt, sysAccPk, tmpDir, cfg))) - defer removeFile(t, conf) + ` + + cases := []struct { + name string + errorText string + cfg string + }{ + { + name: "Operator with Leafnode", + errorText: "operator mode does not allow specifying user in leafnode config", + cfg: ` + port: -1 + authorization { + users = [{user: "u", password: "p"}]} + }`, + }, + { + name: "Operator with NKey", + errorText: "operator mode and non account nkeys are incompatible", + cfg: ` + port: -1 + authorization { + account: notankey + }`, + }, + { + name: "Operator remote account NKeys", + errorText: "operator mode requires account nkeys in remotes. " + + "Please add an `account` key to each remote in your `leafnodes` section, to assign it to an account. " + + "Each account value should be a 56 character public key, starting with the letter 'A'", + cfg: `remotes: [{url: u}]`, + }, + } + for _, c := range cases { + t.Run(c.name, func(t *testing.T) { + + conf := createConfFile(t, []byte(fmt.Sprintf(configTmpl, ojwt, sysAccPk, tmpDir, c.cfg))) opts := LoadConfig(conf) s, err := NewServer(opts) if err == nil { @@ -2577,8 +2573,8 @@ func TestLeafNodeOperatorBadCfg(t *testing.T) { // Since the server cannot be stopped, since it did not start, // let's manually close the account resolver to avoid leaking go routines. opts.AccountResolver.Close() - if err.Error() != errorText { - t.Fatalf("Expected error %s but got %s", errorText, err) + if err.Error() != c.errorText { + t.Fatalf("Expected error %s but got %s", c.errorText, err) } }) } @@ -2599,7 +2595,6 @@ func TestLeafNodeTLSConfigReload(t *testing.T) { } ` confA := createConfFile(t, []byte(fmt.Sprintf(template, ""))) - defer removeFile(t, confA) srvA, optsA := RunServerWithConfig(confA) defer srvA.Shutdown() @@ -2622,7 +2617,6 @@ func TestLeafNodeTLSConfigReload(t *testing.T) { ] } `, optsA.LeafNode.Port))) - defer removeFile(t, confB) optsB, err := ProcessConfigFile(confB) if err != nil { @@ -2674,7 +2668,6 @@ func TestLeafNodeTLSConfigReloadForRemote(t *testing.T) { } } `)) - defer removeFile(t, confA) srvA, optsA := RunServerWithConfig(confA) defer srvA.Shutdown() @@ -2698,7 +2691,6 @@ func TestLeafNodeTLSConfigReloadForRemote(t *testing.T) { } ` confB := createConfFile(t, []byte(fmt.Sprintf(template, optsA.LeafNode.Port, ""))) - defer removeFile(t, confB) srvB, _ := RunServerWithConfig(confB) defer srvB.Shutdown() @@ -2956,7 +2948,6 @@ func TestLeafNodeWSRemoteCompressAndMaskingOptions(t *testing.T) { ] } `, test.compStr, test.noMaskStr))) - defer removeFile(t, conf) o, err := ProcessConfigFile(conf) if err != nil { t.Fatalf("Error loading conf: %v", err) @@ -3108,7 +3099,6 @@ func TestLeafNodeWSAuth(t *testing.T) { ` s, o, conf := runReloadServerWithContent(t, []byte(fmt.Sprintf(template, jwt.ConnectionTypeStandard, jwt.ConnectionTypeLeafnode, ""))) - defer os.Remove(conf) defer s.Shutdown() l := &captureErrorLogger{errCh: make(chan string, 10)} @@ -3330,7 +3320,6 @@ func TestLeafNodeWSNoAuthUser(t *testing.T) { port: -1 } `)) - defer removeFile(t, conf) s, o := RunServerWithConfig(conf) defer s.Shutdown() @@ -3352,7 +3341,6 @@ func TestLeafNodeWSNoAuthUser(t *testing.T) { ] } `, o.Websocket.Port))) - defer removeFile(t, lconf) ln, lo := RunServerWithConfig(lconf) defer ln.Shutdown() @@ -3755,12 +3743,10 @@ func TestLeafNodeNoMsgLoop(t *testing.T) { } ` configS1 := createConfFile(t, []byte(fmt.Sprintf(hubConf, ""))) - defer removeFile(t, configS1) s1, o1 := RunServerWithConfig(configS1) defer s1.Shutdown() configS2S3 := createConfFile(t, []byte(fmt.Sprintf(hubConf, fmt.Sprintf(`routes: ["nats://127.0.0.1:%d"]`, o1.Cluster.Port)))) - defer removeFile(t, configS2S3) s2, o2 := RunServerWithConfig(configS2S3) defer s2.Shutdown() @@ -3789,7 +3775,6 @@ func TestLeafNodeNoMsgLoop(t *testing.T) { } ` lnconf := createConfFile(t, []byte(fmt.Sprintf(contentLN, -1, o1.LeafNode.Port))) - defer removeFile(t, lnconf) sl1, slo1 := RunServerWithConfig(lnconf) defer sl1.Shutdown() @@ -3855,7 +3840,6 @@ func TestLeafNodeNoMsgLoop(t *testing.T) { // Use config file but this time reuse the client port and set the 2nd server for // the remote leaf node port. lnconf = createConfFile(t, []byte(fmt.Sprintf(contentLN, slo2.Port, o2.LeafNode.Port))) - defer removeFile(t, lnconf) sl2, _ = RunServerWithConfig(lnconf) defer sl2.Shutdown() @@ -3897,7 +3881,6 @@ func TestLeafNodeInterestPropagationDaisychain(t *testing.T) { }` confA := createConfFile(t, []byte(fmt.Sprintf(aTmpl, -1, -1))) - defer removeFile(t, confA) sA, _ := RunServerWithConfig(confA) defer sA.Shutdown() @@ -3912,7 +3895,6 @@ func TestLeafNodeInterestPropagationDaisychain(t *testing.T) { url:"nats://127.0.0.1:%d" }] }`, aLeafPort))) - defer removeFile(t, confB) sB, _ := RunServerWithConfig(confB) defer sB.Shutdown() @@ -3922,7 +3904,6 @@ func TestLeafNodeInterestPropagationDaisychain(t *testing.T) { port: -1 remotes = [{url:"nats://127.0.0.1:%d"}] }`, sB.opts.LeafNode.Port))) - defer removeFile(t, confC) sC, _ := RunServerWithConfig(confC) defer sC.Shutdown() @@ -3947,7 +3928,6 @@ func TestLeafNodeInterestPropagationDaisychain(t *testing.T) { sA.WaitForShutdown() confAA := createConfFile(t, []byte(fmt.Sprintf(aTmpl, aPort, aLeafPort))) - defer removeFile(t, confAA) sAA, _ := RunServerWithConfig(confAA) defer sAA.Shutdown() @@ -4107,8 +4087,7 @@ accounts :{ system_account: SYS ` - sd1 := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(sd1) + sd1 := t.TempDir() confA := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 %s @@ -4121,12 +4100,10 @@ leafnodes: { } } `, accs, sd1))) - defer removeFile(t, confA) sA, _ := RunServerWithConfig(confA) defer sA.Shutdown() - sd2 := createDir(t, JetStreamStoreDir) - defer os.RemoveAll(sd2) + sd2 := t.TempDir() confL := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 %s @@ -4137,7 +4114,6 @@ leafnodes:{ {url:nats://s1:s1@127.0.0.1:%d, account: SYS}] } `, accs, sd2, sA.opts.LeafNode.Port, sA.opts.LeafNode.Port))) - defer removeFile(t, confL) sL, _ := RunServerWithConfig(confL) defer sL.Shutdown() @@ -4229,7 +4205,6 @@ func TestLeafNodeMinVersion(t *testing.T) { min_version: 2.8.0 } `)) - defer removeFile(t, conf) s, o := RunServerWithConfig(conf) defer s.Shutdown() @@ -4241,7 +4216,6 @@ func TestLeafNodeMinVersion(t *testing.T) { ] } `, o.LeafNode.Port))) - defer removeFile(t, rconf) ln, _ := RunServerWithConfig(rconf) defer ln.Shutdown() @@ -4289,7 +4263,6 @@ func TestLeafNodeMinVersion(t *testing.T) { min_version: "%s" } `, mv))) - defer removeFile(t, conf) s, o = RunServerWithConfig(conf) defer s.Shutdown() @@ -4304,7 +4277,6 @@ func TestLeafNodeMinVersion(t *testing.T) { ] } `, o.LeafNode.Port))) - defer removeFile(t, rconf) lo := LoadConfig(rconf) lo.LeafNode.ReconnectInterval = 50 * time.Millisecond ln = RunServer(lo) @@ -4355,7 +4327,6 @@ func TestLeafNodeStreamAndShadowSubs(t *testing.T) { } } `)) - defer removeFile(t, hubConf) hub, hubo := RunServerWithConfig(hubConf) defer hub.Shutdown() @@ -4380,7 +4351,6 @@ func TestLeafNodeStreamAndShadowSubs(t *testing.T) { } `, hubo.LeafNode.Port) leafConf := createConfFile(t, []byte(leafConfContet)) - defer removeFile(t, leafConf) leafo := LoadConfig(leafConf) leafo.LeafNode.ReconnectInterval = 50 * time.Millisecond leaf := RunServer(leafo) @@ -4462,7 +4432,6 @@ func TestLeafNodeAuthConfigReload(t *testing.T) { } ` conf := createConfFile(t, []byte(template)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -4487,7 +4456,6 @@ func TestLeafNodeSignatureCB(t *testing.T) { ` conf := createConfFile(t, []byte(content)) s, opts := RunServerWithConfig(conf) - defer removeFile(t, conf) defer s.Shutdown() _, akp := createAccount(s) @@ -4614,7 +4582,6 @@ func TestLeafNodePermsSuppressSubs(t *testing.T) { listen: 127.0.0.1:7422 } `)) - defer removeFile(t, conf) lconf := createConfFile(t, []byte(` listen: 127.0.0.1:-1 @@ -4623,7 +4590,6 @@ func TestLeafNodePermsSuppressSubs(t *testing.T) { } trace = true `)) - defer removeFile(t, lconf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -4719,7 +4685,6 @@ func TestLeafNodeDuplicateMsg(t *testing.T) { } } `)) - defer removeFile(t, a1Conf) a1, oa1 := RunServerWithConfig(a1Conf) defer a1.Shutdown() @@ -4761,7 +4726,6 @@ func TestLeafNodeDuplicateMsg(t *testing.T) { ] } }`, oa1.Cluster.Port))) - defer removeFile(t, a2Conf) a2, _ := RunServerWithConfig(a2Conf) defer a2.Shutdown() @@ -4804,7 +4768,6 @@ func TestLeafNodeDuplicateMsg(t *testing.T) { ] } }`)) - defer removeFile(t, b1Conf) b1, ob1 := RunServerWithConfig(b1Conf) defer b1.Shutdown() @@ -4846,7 +4809,6 @@ func TestLeafNodeDuplicateMsg(t *testing.T) { ] } }`, ob1.Cluster.Port))) - defer removeFile(t, b2Conf) b2, _ := RunServerWithConfig(b2Conf) defer b2.Shutdown() diff --git a/server/log_test.go b/server/log_test.go index e32c3556..7cf9b8c5 100644 --- a/server/log_test.go +++ b/server/log_test.go @@ -16,6 +16,7 @@ package server import ( "bytes" "os" + "path/filepath" "runtime" "strings" "testing" @@ -99,9 +100,7 @@ func TestReOpenLogFile(t *testing.T) { dl.CheckContent(t, "File log re-open ignored, not a file logger") // Set a File log - s.opts.LogFile = "test.log" - defer removeFile(t, s.opts.LogFile) - defer removeFile(t, s.opts.LogFile+".bak") + s.opts.LogFile = filepath.Join(t.TempDir(), "test.log") fileLog := logger.NewFileLogger(s.opts.LogFile, s.opts.Logtime, s.opts.Debug, s.opts.Trace, true) s.SetLogger(fileLog, false, false) // Add some log @@ -141,9 +140,7 @@ func TestReOpenLogFile(t *testing.T) { } func TestFileLoggerSizeLimitAndReopen(t *testing.T) { - tmpDir := createDir(t, "nats-server") - defer removeDir(t, tmpDir) - file := createFileAtDir(t, tmpDir, "log_") + file := createTempFile(t, "log_") file.Close() s := &Server{opts: &Options{}} diff --git a/server/monitor_test.go b/server/monitor_test.go index ecf861f9..6f00e18f 100644 --- a/server/monitor_test.go +++ b/server/monitor_test.go @@ -2632,7 +2632,6 @@ func TestMonitorClusterURLs(t *testing.T) { } ` conf := createConfFile(t, []byte(fmt.Sprintf(template, "nats://"+s2ClusterHostPort, ""))) - defer removeFile(t, conf) s1, _ := RunServerWithConfig(conf) defer s1.Shutdown() @@ -3249,7 +3248,6 @@ func TestMonitorGatewayzAccounts(t *testing.T) { } no_sys_acc = true `, accounts))) - defer removeFile(t, bConf) sb, ob := RunServerWithConfig(bConf) defer sb.Shutdown() @@ -3274,7 +3272,6 @@ func TestMonitorGatewayzAccounts(t *testing.T) { } no_sys_acc = true `, accounts, sb.GatewayAddr().Port))) - defer removeFile(t, aConf) sa, oa := RunServerWithConfig(aConf) defer sa.Shutdown() @@ -3651,7 +3648,6 @@ func TestMonitorOpJWT(t *testing.T) { resolver = MEMORY ` conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) sa, _ := RunServerWithConfig(conf) defer sa.Shutdown() @@ -3692,7 +3688,6 @@ func TestMonitorLeafz(t *testing.T) { } ` conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) sb, ob := RunServerWithConfig(conf) defer sb.Shutdown() @@ -3711,9 +3706,7 @@ func TestMonitorLeafz(t *testing.T) { return acc, creds } acc1, mycreds1 := createAcc(t) - defer removeFile(t, mycreds1) acc2, mycreds2 := createAcc(t) - defer removeFile(t, mycreds2) content = ` port: -1 @@ -3751,7 +3744,6 @@ func TestMonitorLeafz(t *testing.T) { acc1.Name, ob.LeafNode.Port, mycreds1, acc2.Name, ob.LeafNode.Port, mycreds2) conf = createConfFile(t, []byte(config)) - defer removeFile(t, conf) sa, oa := RunServerWithConfig(conf) defer sa.Shutdown() @@ -4092,8 +4084,7 @@ func TestMonitorJsz(t *testing.T) { {7500, 7501, 7502, 5502}, {5500, 5501, 5502, 7502}, } { - tmpDir := createDir(t, fmt.Sprintf("srv_%d", test.port)) - defer removeDir(t, tmpDir) + tmpDir := t.TempDir() cf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:%d http: 127.0.0.1:%d @@ -4123,7 +4114,6 @@ func TestMonitorJsz(t *testing.T) { routes: [nats-route://127.0.0.1:%d] } server_name: server_%d `, test.port, test.mport, tmpDir, test.cport, test.routed, test.port))) - defer removeFile(t, cf) s, _ := RunServerWithConfig(cf) defer s.Shutdown() @@ -4412,7 +4402,6 @@ func TestMonitorReloadTLSConfig(t *testing.T) { conf := createConfFile(t, []byte(fmt.Sprintf(template, "../test/configs/certs/server-noip.pem", "../test/configs/certs/server-key-noip.pem"))) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() diff --git a/server/mqtt_test.go b/server/mqtt_test.go index 60043e3e..44ec12ea 100644 --- a/server/mqtt_test.go +++ b/server/mqtt_test.go @@ -311,7 +311,7 @@ func testMQTTRunServer(t testing.TB, o *Options) *Server { t.Helper() o.NoLog = false if o.StoreDir == _EMPTY_ { - o.StoreDir = createDir(t, "mqtt_js") + o.StoreDir = t.TempDir() } s, err := NewServer(o) if err != nil { @@ -365,7 +365,6 @@ func TestMQTTServerNameRequired(t *testing.T) { port: -1 } `)) - defer removeFile(t, conf) o, err := ProcessConfigFile(conf) if err != nil { t.Fatalf("Error processing config file: %v", err) @@ -386,7 +385,6 @@ func TestMQTTStandaloneRequiresJetStream(t *testing.T) { } } `)) - defer removeFile(t, conf) o, err := ProcessConfigFile(conf) if err != nil { t.Fatalf("Error processing config file: %v", err) @@ -408,7 +406,6 @@ func TestMQTTConfig(t *testing.T) { } } `)) - defer removeFile(t, conf) s, o := RunServerWithConfig(conf) defer testMQTTShutdownServer(s) if o.MQTT.TLSConfig == nil { @@ -582,7 +579,6 @@ func TestMQTTParseOptions(t *testing.T) { } { t.Run(test.name, func(t *testing.T) { conf := createConfFile(t, []byte(test.content)) - defer removeFile(t, conf) o, err := ProcessConfigFile(conf) if test.err != _EMPTY_ { if err == nil || !strings.Contains(err.Error(), test.err) { @@ -3211,7 +3207,7 @@ func TestMQTTLeafnodeWithoutJSToClusterWithJSNoSharedSysAcc(t *testing.T) { if len(lno.Accounts) > 0 { lno.JetStream = true lno.JetStreamDomain = "OTHER" - lno.StoreDir = createDir(t, "mqtt_js_ln") + lno.StoreDir = t.TempDir() } // Use RoutesFromStr() to make an array of urls @@ -3730,7 +3726,6 @@ func TestMQTTWillRetainPermViolation(t *testing.T) { } ` conf := createConfFile(t, []byte(fmt.Sprintf(template, "foo"))) - defer removeFile(t, conf) s, o := RunServerWithConfig(conf) defer testMQTTShutdownServer(s) @@ -4969,7 +4964,6 @@ func TestMQTTConfigReload(t *testing.T) { } ` conf := createConfFile(t, []byte(fmt.Sprintf(template, `"5s"`, `10000`))) - defer removeFile(t, conf) s, o := RunServerWithConfig(conf) defer testMQTTShutdownServer(s) @@ -5099,7 +5093,6 @@ func TestMQTTWebsocketToMQTTPort(t *testing.T) { no_tls: true } `)) - defer removeFile(t, conf) s, o := RunServerWithConfig(conf) defer testMQTTShutdownServer(s) @@ -5143,7 +5136,6 @@ func TestMQTTWebsocket(t *testing.T) { } ` s, o, conf := runReloadServerWithContent(t, []byte(fmt.Sprintf(template, jwt.ConnectionTypeMqtt, ""))) - defer removeFile(t, conf) defer testMQTTShutdownServer(s) cisub := &mqttConnInfo{clientID: "sub", user: "mqtt", pass: "pwd", ws: true} @@ -5206,7 +5198,6 @@ func TestMQTTPartial(t *testing.T) { no_tls: true } `)) - defer removeFile(t, conf) s, o := RunServerWithConfig(conf) defer testMQTTShutdownServer(s) @@ -5262,7 +5253,6 @@ func TestMQTTWebsocketTLS(t *testing.T) { } } `)) - defer removeFile(t, conf) s, o := RunServerWithConfig(conf) defer testMQTTShutdownServer(s) @@ -5693,7 +5683,6 @@ func TestMQTTStreamReplicasConfigReload(t *testing.T) { } ` conf := createConfFile(t, []byte(fmt.Sprintf(tmpl, 3))) - defer removeFile(t, conf) s, o := RunServerWithConfig(conf) defer testMQTTShutdownServer(s) @@ -5874,7 +5863,6 @@ func TestMQTTConsumerReplicasReload(t *testing.T) { } ` conf := createConfFile(t, []byte(fmt.Sprintf(tmpl, 3, "false"))) - defer removeFile(t, conf) s, o := RunServerWithConfig(conf) defer testMQTTShutdownServer(s) @@ -6037,7 +6025,6 @@ func TestMQTTConsumerInactiveThreshold(t *testing.T) { accounts { $SYS { users = [ { user: "admin", pass: "s3cr3t!" } ] } } ` conf := createConfFile(t, []byte(fmt.Sprintf(tmpl, "0.2s"))) - defer removeFile(t, conf) s, o := RunServerWithConfig(conf) defer testMQTTShutdownServer(s) @@ -6084,7 +6071,6 @@ func TestMQTTSubjectMapping(t *testing.T) { listen: 127.0.0.1:-1 } `)) - defer removeFile(t, conf) s, o := RunServerWithConfig(conf) defer testMQTTShutdownServer(s) @@ -6203,7 +6189,6 @@ func TestMQTTSubjectMappingWithImportExport(t *testing.T) { listen: 127.0.0.1:-1 } `)) - defer removeFile(t, conf) s, o := RunServerWithConfig(conf) defer testMQTTShutdownServer(s) diff --git a/server/nkey_test.go b/server/nkey_test.go index 2a5a7cc1..d815d14e 100644 --- a/server/nkey_test.go +++ b/server/nkey_test.go @@ -234,7 +234,6 @@ func TestMixedClientConfig(t *testing.T) { {user: alice, password: foo} ] }`)) - defer removeFile(t, confFileName) opts, err := ProcessConfigFile(confFileName) if err != nil { t.Fatalf("Received an error processing config file: %v", err) diff --git a/server/norace_test.go b/server/norace_test.go index f07583b2..06fafa79 100644 --- a/server/norace_test.go +++ b/server/norace_test.go @@ -1094,10 +1094,7 @@ func TestNoRaceAcceptLoopsDoNotLeaveOpenedConn(t *testing.T) { } func TestNoRaceJetStreamDeleteStreamManyConsumers(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() mname := "MYS" @@ -1126,10 +1123,7 @@ func TestNoRaceJetStreamDeleteStreamManyConsumers(t *testing.T) { // This is not limited to the case above, its just the one that exposed it. // This test is to show that issue and that the fix works, meaning we no longer swap c.acc. func TestNoRaceJetStreamServiceImportAccountSwapIssue(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client based API @@ -1203,10 +1197,7 @@ func TestNoRaceJetStreamServiceImportAccountSwapIssue(t *testing.T) { } func TestNoRaceJetStreamAPIStreamListPaging(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Create 2X limit @@ -1270,10 +1261,7 @@ func TestNoRaceJetStreamAPIStreamListPaging(t *testing.T) { } func TestNoRaceJetStreamAPIConsumerListPaging(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() sname := "MYSTREAM" @@ -1336,7 +1324,7 @@ func TestNoRaceJetStreamAPIConsumerListPaging(t *testing.T) { } func TestNoRaceJetStreamWorkQueueLoadBalance(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() mname := "MY_MSG_SET" @@ -2050,10 +2038,7 @@ func TestNoRaceJetStreamClusterExtendedStreamPurgeStall(t *testing.T) { } } - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -2380,10 +2365,7 @@ func TestNoRaceJetStreamSuperClusterRIPStress(t *testing.T) { } func TestNoRaceJetStreamSlowFilteredInititalPendingAndFirstMsg(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Create directly here to force multiple blocks, etc. @@ -2533,10 +2515,7 @@ func TestNoRaceJetStreamFileStoreBufferReuse(t *testing.T) { // Uncomment to run. Needs to be on a big machine. skip(t) - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() cfg := &StreamConfig{Name: "TEST", Subjects: []string{"foo", "bar", "baz"}, Storage: FileStorage} @@ -2875,11 +2854,7 @@ func TestNoRaceJetStreamSuperClusterAccountConnz(t *testing.T) { } func TestNoRaceCompressedConnz(t *testing.T) { - s := RunBasicJetStreamServer() - config := s.JetStreamConfig() - if config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, _ := jsClientConnect(t, s) @@ -3107,11 +3082,7 @@ func TestNoRaceJetStreamClusterExtendedStreamPurge(t *testing.T) { } func TestNoRaceJetStreamFileStoreCompaction(t *testing.T) { - s := RunBasicJetStreamServer() - config := s.JetStreamConfig() - if config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -3163,7 +3134,6 @@ func TestNoRaceJetStreamEncryptionEnabledOnRestartWithExpire(t *testing.T) { listen: 127.0.0.1:-1 jetstream: enabled `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -3212,7 +3182,6 @@ func TestNoRaceJetStreamEncryptionEnabledOnRestartWithExpire(t *testing.T) { ncs := fmt.Sprintf("\nlisten: 127.0.0.1:-1\njetstream: {key: %q, store_dir: %q}\n", "s3cr3t!", config.StoreDir) conf = createConfFile(t, []byte(ncs)) - defer removeFile(t, conf) // Try to drain entropy to see if effects startup time. drain := make([]byte, 32*1024*1024) // Pull 32Mb of crypto rand. @@ -3233,11 +3202,7 @@ func TestNoRaceJetStreamOrderedConsumerMissingMsg(t *testing.T) { // Uncomment to run. Needs to be on a big machine. Do not want as part of Travis tests atm. skip(t) - s := RunBasicJetStreamServer() - config := s.JetStreamConfig() - if config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -3390,7 +3355,7 @@ func TestNoRaceJetStreamClusterInterestPolicyAckNone(t *testing.T) { // There was a bug in the filestore compact code that would cause a store // with JSExpectedLastSubjSeq to fail with "wrong last sequence: 0" func TestNoRaceJetStreamLastSubjSeqAndFilestoreCompact(t *testing.T) { - s := RunBasicJetStreamServer() + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client based API @@ -4060,11 +4025,7 @@ func TestNoRaceJetStreamClusterStreamDropCLFS(t *testing.T) { } func TestNoRaceJetStreamMemstoreWithLargeInteriorDeletes(t *testing.T) { - s := RunBasicJetStreamServer() - config := s.JetStreamConfig() - if config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -4117,8 +4078,7 @@ func TestNoRaceJetStreamMemstoreWithLargeInteriorDeletes(t *testing.T) { // cleanup too many consumers at the same time. // https://github.com/nats-io/nats-server/issues/2742 func TestNoRaceJetStreamConsumerFileStoreConcurrentDiskIO(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() // Artificially adjust our environment for this test. gmp := runtime.GOMAXPROCS(32) @@ -4255,7 +4215,6 @@ func TestNoRaceJetStreamStreamInfoSubjectDetailsLimits(t *testing.T) { } } `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) if config := s.JetStreamConfig(); config != nil { @@ -4320,10 +4279,7 @@ func TestNoRaceJetStreamStreamInfoSubjectDetailsLimits(t *testing.T) { } func TestNoRaceJetStreamSparseConsumers(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -4398,10 +4354,7 @@ func TestNoRaceJetStreamSparseConsumers(t *testing.T) { } func TestNoRaceJetStreamConsumerFilterPerfDegradation(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, _ := jsClientConnect(t, s) @@ -4455,8 +4408,7 @@ func TestNoRaceJetStreamConsumerFilterPerfDegradation(t *testing.T) { } func TestNoRaceJetStreamFileStoreKeyFileCleanup(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() prf := func(context []byte) ([]byte, error) { h := hmac.New(sha256.New, []byte("dlc22")) @@ -4588,10 +4540,7 @@ func TestNoRaceJetStreamMsgIdPerfDuringCatchup(t *testing.T) { func TestNoRaceJetStreamRebuildDeDupeAndMemoryPerf(t *testing.T) { skip(t) - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -4672,10 +4621,7 @@ func TestNoRaceJetStreamRebuildDeDupeAndMemoryPerf(t *testing.T) { func TestNoRaceJetStreamMemoryUsageOnLimitedStreamWithMirror(t *testing.T) { skip(t) - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -4725,10 +4671,7 @@ func TestNoRaceJetStreamMemoryUsageOnLimitedStreamWithMirror(t *testing.T) { func TestNoRaceJetStreamOrderedConsumerLongRTTPerformance(t *testing.T) { skip(t) - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, _ := jsClientConnect(t, s) @@ -5389,8 +5332,7 @@ func TestNoRaceJetStreamClusterStreamNamesAndInfosMoreThanAPILimit(t *testing.T) } func TestNoRaceJetStreamFileStoreLargeKVAccessTiming(t *testing.T) { - storeDir := createDir(t, JetStreamStoreDir) - defer removeDir(t, storeDir) + storeDir := t.TempDir() blkSize := uint64(4 * 1024) // Compensate for slower IO on MacOSX @@ -5452,10 +5394,7 @@ func TestNoRaceJetStreamFileStoreLargeKVAccessTiming(t *testing.T) { } func TestNoRaceJetStreamKVLock(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -5588,10 +5527,7 @@ func TestNoRaceJetStreamSuperClusterStreamMoveLongRTT(t *testing.T) { // https://github.com/nats-io/nats-server/issues/3455 func TestNoRaceJetStreamConcurrentPullConsumerBatch(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -5678,10 +5614,7 @@ func TestNoRaceJetStreamManyPullConsumersNeedAckOptimization(t *testing.T) { // Run with cpu and memory profiling to make sure we have improved. skip(t) - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() nc, js := jsClientConnect(t, s) @@ -5731,10 +5664,7 @@ func TestNoRaceJetStreamManyPullConsumersNeedAckOptimization(t *testing.T) { // https://github.com/nats-io/nats-server/issues/3499 func TestNoRaceJetStreamDeleteConsumerWithInterestStreamAndHighSeqs(t *testing.T) { - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. @@ -5789,10 +5719,7 @@ func TestNoRaceJetStreamDeleteConsumerWithInterestStreamAndHighSeqs(t *testing.T func TestJetStreamLargeNumConsumersPerfImpact(t *testing.T) { skip(t) - s := RunBasicJetStreamServer() - if config := s.JetStreamConfig(); config != nil { - defer removeDir(t, config.StoreDir) - } + s := RunBasicJetStreamServer(t) defer s.Shutdown() // Client for API requests. diff --git a/server/opts_test.go b/server/opts_test.go index 1a78aaad..ed7d761a 100644 --- a/server/opts_test.go +++ b/server/opts_test.go @@ -880,7 +880,6 @@ func TestNkeyUsersConfig(t *testing.T) { {nkey: "UA3C5TBZYK5GJQJRWPMU6NFY5JNAEVQB2V2TUZFZDHFJFUYVKTTUOFKZ"} ] }`)) - defer removeFile(t, confFileName) opts, err := ProcessConfigFile(confFileName) if err != nil { t.Fatalf("Received an error reading config file: %v", err) @@ -959,7 +958,6 @@ func TestTlsPinnedCertificates(t *testing.T) { "a8f407340dcc719864214b85ed96f98d16cbffa8f509d9fa4ca237b7bb3f9c32"] } }`)) - defer removeFile(t, confFileName) opts, err := ProcessConfigFile(confFileName) if err != nil { t.Fatalf("Received an error reading config file: %v", err) @@ -1033,7 +1031,6 @@ func TestNkeyUsersDefaultPermissionsConfig(t *testing.T) { t.Fatal("Has unexpected Publish permission") } } - defer removeFile(t, confFileName) opts, err := ProcessConfigFile(confFileName) if err != nil { t.Fatalf("Received an error reading config file: %v", err) @@ -1094,7 +1091,6 @@ func TestNkeyUsersWithPermsConfig(t *testing.T) { } ] }`)) - defer removeFile(t, confFileName) opts, err := ProcessConfigFile(confFileName) if err != nil { t.Fatalf("Received an error reading config file: %v", err) @@ -1128,7 +1124,6 @@ func TestNkeyUsersWithPermsConfig(t *testing.T) { func TestBadNkeyConfig(t *testing.T) { confFileName := "nkeys_bad.conf" - defer removeFile(t, confFileName) content := ` authorization { users = [ {nkey: "Ufoo"}] @@ -1143,7 +1138,6 @@ func TestBadNkeyConfig(t *testing.T) { func TestNkeyWithPassConfig(t *testing.T) { confFileName := "nkeys_pass.conf" - defer removeFile(t, confFileName) content := ` authorization { users = [ @@ -1160,7 +1154,6 @@ func TestNkeyWithPassConfig(t *testing.T) { func TestTokenWithUserPass(t *testing.T) { confFileName := "test.conf" - defer removeFile(t, confFileName) content := ` authorization={ user: user @@ -1181,7 +1174,6 @@ func TestTokenWithUserPass(t *testing.T) { func TestTokenWithUsers(t *testing.T) { confFileName := "test.conf" - defer removeFile(t, confFileName) content := ` authorization={ token: $2a$11$whatever @@ -1202,11 +1194,7 @@ func TestTokenWithUsers(t *testing.T) { } func TestParseWriteDeadline(t *testing.T) { - confFile := "test.conf" - defer removeFile(t, confFile) - if err := os.WriteFile(confFile, []byte("write_deadline: \"1x\""), 0666); err != nil { - t.Fatalf("Error writing config file: %v", err) - } + confFile := createConfFile(t, []byte("write_deadline: \"1x\"")) _, err := ProcessConfigFile(confFile) if err == nil { t.Fatal("Expected error, got none") @@ -1214,10 +1202,7 @@ func TestParseWriteDeadline(t *testing.T) { if !strings.Contains(err.Error(), "parsing") { t.Fatalf("Expected error related to parsing, got %v", err) } - removeFile(t, confFile) - if err := os.WriteFile(confFile, []byte("write_deadline: \"1s\""), 0666); err != nil { - t.Fatalf("Error writing config file: %v", err) - } + confFile = createConfFile(t, []byte("write_deadline: \"1s\"")) opts, err := ProcessConfigFile(confFile) if err != nil { t.Fatalf("Unexpected error: %v", err) @@ -1225,7 +1210,6 @@ func TestParseWriteDeadline(t *testing.T) { if opts.WriteDeadline != time.Second { t.Fatalf("Expected write_deadline to be 1s, got %v", opts.WriteDeadline) } - removeFile(t, confFile) oldStdout := os.Stdout _, w, _ := os.Pipe() defer func() { @@ -1233,9 +1217,7 @@ func TestParseWriteDeadline(t *testing.T) { os.Stdout = oldStdout }() os.Stdout = w - if err := os.WriteFile(confFile, []byte("write_deadline: 2"), 0666); err != nil { - t.Fatalf("Error writing config file: %v", err) - } + confFile = createConfFile(t, []byte("write_deadline: 2")) opts, err = ProcessConfigFile(confFile) if err != nil { t.Fatalf("Unexpected error: %v", err) @@ -1353,7 +1335,6 @@ func TestMalformedClusterAddress(t *testing.T) { func TestPanic(t *testing.T) { conf := createConfFile(t, []byte(`port: "this_string_trips_a_panic"`)) - defer removeFile(t, conf) opts, err := ProcessConfigFile(conf) if err == nil { t.Fatalf("Expected an error reading config file: got %+v", opts) @@ -1366,7 +1347,6 @@ func TestPanic(t *testing.T) { func TestPingIntervalOld(t *testing.T) { conf := createConfFile(t, []byte(`ping_interval: 5`)) - defer removeFile(t, conf) opts := &Options{} err := opts.ProcessConfigFile(conf) if err == nil { @@ -1389,7 +1369,6 @@ func TestPingIntervalOld(t *testing.T) { func TestPingIntervalNew(t *testing.T) { conf := createConfFile(t, []byte(`ping_interval: "5m"`)) - defer removeFile(t, conf) opts := &Options{} if err := opts.ProcessConfigFile(conf); err != nil { t.Fatalf("expected no error") @@ -1638,7 +1617,6 @@ func TestClusterPermissionsConfig(t *testing.T) { } ` conf := createConfFile(t, []byte(fmt.Sprintf(template, ""))) - defer removeFile(t, conf) opts, err := ProcessConfigFile(conf) if err != nil { if cerr, ok := err.(*processConfigErr); ok && len(cerr.Errors()) > 0 { @@ -1673,7 +1651,6 @@ func TestClusterPermissionsConfig(t *testing.T) { } } `))) - defer removeFile(t, conf) opts, err = ProcessConfigFile(conf) if err != nil { t.Fatalf("Error processing config file: %v", err) @@ -1753,7 +1730,6 @@ func TestClusterPermissionsConfig(t *testing.T) { } `, perms))) _, err := ProcessConfigFile(conf) - removeFile(t, conf) if err == nil { t.Fatalf("Expected failure for permissions %s", perms) } @@ -1771,7 +1747,6 @@ func TestClusterPermissionsConfig(t *testing.T) { } `, perms))) _, err := ProcessConfigFile(conf) - removeFile(t, conf) if err == nil { t.Fatalf("Expected failure for permissions %s", perms) } @@ -1879,7 +1854,6 @@ func TestParseServiceLatency(t *testing.T) { t.Run(c.name, func(t *testing.T) { f := createConfFile(t, []byte(c.conf)) opts, err := ProcessConfigFile(f) - removeFile(t, f) switch { case c.wantErr && err == nil: t.Fatalf("Expected ProcessConfigFile to fail, but didn't") @@ -1913,6 +1887,7 @@ func TestParseServiceLatency(t *testing.T) { func TestParseExport(t *testing.T) { conf := ` + port: -1 system_account: sys accounts { sys { @@ -1974,7 +1949,6 @@ func TestParseExport(t *testing.T) { t.Fatal("Failed startup") } defer s.Shutdown() - defer removeFile(t, f) connect := func(user string) *nats.Conn { nc, err := nats.Connect(fmt.Sprintf("nats://%s:pwd@%s:%d", user, o.Host, o.Port)) require_NoError(t, err) @@ -2107,7 +2081,6 @@ func TestParsingGateways(t *testing.T) { } ` file := "server_config_gateways.conf" - defer removeFile(t, file) if err := os.WriteFile(file, []byte(content), 0600); err != nil { t.Fatalf("Error writing config file: %v", err) } @@ -2361,7 +2334,6 @@ func TestParsingGatewaysErrors(t *testing.T) { } { t.Run(test.name, func(t *testing.T) { file := fmt.Sprintf("server_config_gateways_%s.conf", test.name) - defer removeFile(t, file) if err := os.WriteFile(file, []byte(test.content), 0600); err != nil { t.Fatalf("Error writing config file: %v", err) } @@ -2395,7 +2367,6 @@ func TestParsingLeafNodesListener(t *testing.T) { } ` conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) opts, err := ProcessConfigFile(conf) if err != nil { t.Fatalf("Error processing file: %v", err) @@ -2437,7 +2408,6 @@ func TestParsingLeafNodeRemotes(t *testing.T) { } ` conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) opts, err := ProcessConfigFile(conf) if err != nil { t.Fatalf("Error processing file: %v", err) @@ -2477,7 +2447,6 @@ func TestParsingLeafNodeRemotes(t *testing.T) { } ` conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) opts, err := ProcessConfigFile(conf) if err != nil { t.Fatalf("Error processing file: %v", err) @@ -2505,6 +2474,7 @@ func TestParsingLeafNodeRemotes(t *testing.T) { } content := ` + port: -1 leafnodes { remotes = [ { @@ -2518,7 +2488,6 @@ func TestParsingLeafNodeRemotes(t *testing.T) { } ` conf := createConfFile(t, []byte(fmt.Sprintf(content, confURLs))) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -2565,7 +2534,6 @@ func TestParsingLeafNodeRemotes(t *testing.T) { func TestLargeMaxControlLine(t *testing.T) { confFileName := "big_mcl.conf" - defer removeFile(t, confFileName) content := ` max_control_line = 3000000000 ` @@ -2581,7 +2549,6 @@ func TestLargeMaxPayload(t *testing.T) { confFileName := createConfFile(t, []byte(` max_payload = 3000000000 `)) - defer removeFile(t, confFileName) if _, err := ProcessConfigFile(confFileName); err == nil { t.Fatalf("Expected an error from too large of a max_payload entry") } @@ -2590,7 +2557,6 @@ func TestLargeMaxPayload(t *testing.T) { max_payload = 100000 max_pending = 50000 `)) - defer removeFile(t, confFileName) o := LoadConfig(confFileName) s, err := NewServer(o) if err == nil || !strings.Contains(err.Error(), "cannot be higher") { @@ -2608,7 +2574,6 @@ func TestHandleUnknownTopLevelConfigurationField(t *testing.T) { id: "me" } `)) - defer removeFile(t, conf) // Verify that we get an error because of unknown "streaming" field. opts := &Options{} @@ -2646,7 +2611,6 @@ func TestSublistNoCacheConfig(t *testing.T) { confFileName := createConfFile(t, []byte(` disable_sublist_cache: true `)) - defer removeFile(t, confFileName) opts, err := ProcessConfigFile(confFileName) if err != nil { t.Fatalf("Received an error reading config file: %v", err) @@ -2671,7 +2635,6 @@ func TestSublistNoCacheConfigOnAccounts(t *testing.T) { } no_sys_acc = true `)) - defer removeFile(t, confFileName) s, _ := RunServerWithConfig(confFileName) defer s.Shutdown() @@ -2741,54 +2704,42 @@ func TestParsingResponsePermissions(t *testing.T) { // Check defaults conf := createConfFile(t, []byte(fmt.Sprintf(template, "", ""))) - defer removeFile(t, conf) check(t, conf, "", DEFAULT_ALLOW_RESPONSE_MAX_MSGS, DEFAULT_ALLOW_RESPONSE_EXPIRATION) conf = createConfFile(t, []byte(fmt.Sprintf(template, "max: 10", ""))) - defer removeFile(t, conf) check(t, conf, "", 10, DEFAULT_ALLOW_RESPONSE_EXPIRATION) conf = createConfFile(t, []byte(fmt.Sprintf(template, "", "ttl: 5s"))) - defer removeFile(t, conf) check(t, conf, "", DEFAULT_ALLOW_RESPONSE_MAX_MSGS, 5*time.Second) conf = createConfFile(t, []byte(fmt.Sprintf(template, "max: 0", ""))) - defer removeFile(t, conf) check(t, conf, "", DEFAULT_ALLOW_RESPONSE_MAX_MSGS, DEFAULT_ALLOW_RESPONSE_EXPIRATION) conf = createConfFile(t, []byte(fmt.Sprintf(template, "", `ttl: "0s"`))) - defer removeFile(t, conf) check(t, conf, "", DEFAULT_ALLOW_RESPONSE_MAX_MSGS, DEFAULT_ALLOW_RESPONSE_EXPIRATION) // Check normal values conf = createConfFile(t, []byte(fmt.Sprintf(template, "max: 10", `ttl: "5s"`))) - defer removeFile(t, conf) check(t, conf, "", 10, 5*time.Second) // Check negative values ok conf = createConfFile(t, []byte(fmt.Sprintf(template, "max: -1", `ttl: "5s"`))) - defer removeFile(t, conf) check(t, conf, "", -1, 5*time.Second) conf = createConfFile(t, []byte(fmt.Sprintf(template, "max: 10", `ttl: "-1s"`))) - defer removeFile(t, conf) check(t, conf, "", 10, -1*time.Second) conf = createConfFile(t, []byte(fmt.Sprintf(template, "max: -1", `ttl: "-1s"`))) - defer removeFile(t, conf) check(t, conf, "", -1, -1*time.Second) // Check parsing errors conf = createConfFile(t, []byte(fmt.Sprintf(template, "unknown_field: 123", ""))) - defer removeFile(t, conf) check(t, conf, "Unknown field", 0, 0) conf = createConfFile(t, []byte(fmt.Sprintf(template, "max: 10", "ttl: 123"))) - defer removeFile(t, conf) check(t, conf, "not a duration string", 0, 0) conf = createConfFile(t, []byte(fmt.Sprintf(template, "max: 10", "ttl: xyz"))) - defer removeFile(t, conf) check(t, conf, "error parsing expires", 0, 0) } @@ -2912,7 +2863,6 @@ func TestNoAuthUserCode(t *testing.T) { ] } `)) - defer removeFile(t, confFileName) defer os.Unsetenv("NO_AUTH_USER") for _, user := range []string{"a", "b", "b"} { @@ -2962,7 +2912,6 @@ const operatorJwtWithSysAccAndUrlResolver = ` func TestReadOperatorJWT(t *testing.T) { confFileName := createConfFile(t, []byte(operatorJwtWithSysAccAndUrlResolver)) - defer removeFile(t, confFileName) opts, err := ProcessConfigFile(confFileName) if err != nil { t.Fatalf("Received unexpected error %s", err) @@ -2993,7 +2942,6 @@ func TestReadOperatorJWTSystemAccountMatch(t *testing.T) { confFileName := createConfFile(t, []byte(operatorJwtWithSysAccAndMemResolver+` system_account: ADSPOYMHXJN6JVYQCLRZ5XQ5IUN6A3S33XA4NV4VH74423U7U7YR4YVW `)) - defer removeFile(t, confFileName) opts, err := ProcessConfigFile(confFileName) if err != nil { t.Fatalf("Received unexpected error %s", err) @@ -3009,7 +2957,6 @@ func TestReadOperatorJWTSystemAccountMismatch(t *testing.T) { confFileName := createConfFile(t, []byte(operatorJwtWithSysAccAndMemResolver+` system_account: ADXJJCDCSRSMCOV25FXQW7R4QOG7R763TVEXBNWJHLBMBGWOJYG5XZBG `)) - defer removeFile(t, confFileName) opts, err := ProcessConfigFile(confFileName) if err != nil { t.Fatalf("Received unexpected error %s", err) @@ -3036,7 +2983,6 @@ func TestReadOperatorAssertVersion(t *testing.T) { operator: %s resolver: MEM `, jwt))) - defer removeFile(t, confFileName) opts, err := ProcessConfigFile(confFileName) if err != nil { t.Fatalf("Received unexpected error %s", err) @@ -3061,7 +3007,6 @@ func TestReadOperatorAssertVersionFail(t *testing.T) { operator: %s resolver: MEM `, jwt))) - defer removeFile(t, confFileName) opts, err := ProcessConfigFile(confFileName) if err != nil { t.Fatalf("Received unexpected error %s", err) @@ -3087,7 +3032,6 @@ func TestClusterNameAndGatewayNameConflict(t *testing.T) { listen: 127.0.0.1:-1 } `)) - defer removeFile(t, conf) opts, err := ProcessConfigFile(conf) if err != nil { @@ -3157,7 +3101,6 @@ func TestQueuePermissions(t *testing.T) { } { t.Run(test.permType+test.queue, func(t *testing.T) { confFileName := createConfFile(t, []byte(fmt.Sprintf(cfgFmt, test.permType))) - defer removeFile(t, confFileName) opts, err := ProcessConfigFile(confFileName) if err != nil { t.Fatalf("Received unexpected error %s", err) @@ -3207,18 +3150,14 @@ func TestResolverPinnedAccountsFail(t *testing.T) { resolver: URL(foo.bar) resolver_pinned_accounts: [%s] ` - dirSrv := createDir(t, "srv") - defer removeDir(t, dirSrv) conf := createConfFile(t, []byte(fmt.Sprintf(cfgFmt, ojwt, "f"))) - defer removeFile(t, conf) srv, err := NewServer(LoadConfig(conf)) defer srv.Shutdown() require_Error(t, err) require_Contains(t, err.Error(), " is not a valid public account nkey") conf = createConfFile(t, []byte(fmt.Sprintf(cfgFmt, ojwt, "1, x"))) - defer removeFile(t, conf) _, err = ProcessConfigFile(conf) require_Error(t, err) require_Contains(t, "parsing resolver_pinned_accounts: unsupported type") @@ -3229,7 +3168,6 @@ func TestMaxSubTokens(t *testing.T) { listen: 127.0.0.1:-1 max_sub_tokens: 4 `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -3351,7 +3289,6 @@ func TestAuthorizationAndAccountsMisconfigurations(t *testing.T) { } { t.Run(test.name, func(t *testing.T) { conf := createConfFile(t, []byte(test.config)) - defer removeFile(t, conf) if _, err := ProcessConfigFile(conf); err == nil || !strings.Contains(err.Error(), test.err) { t.Fatalf("Expected error %q, got %q", test.err, err.Error()) } diff --git a/server/reload_test.go b/server/reload_test.go index fdb28916..9f334db1 100644 --- a/server/reload_test.go +++ b/server/reload_test.go @@ -66,11 +66,10 @@ func newOptionsFromContent(t *testing.T, content []byte) (*Options, string) { func createConfFile(t testing.TB, content []byte) string { t.Helper() - conf := createFile(t, "") + conf := createTempFile(t, "") fName := conf.Name() conf.Close() if err := os.WriteFile(fName, content, 0666); err != nil { - removeFile(t, fName) t.Fatalf("Error writing conf file: %v", err) } return fName @@ -127,7 +126,6 @@ func TestConfigReloadNoConfigFile(t *testing.T) { // does not support reloading. func TestConfigReloadUnsupported(t *testing.T) { server, _, config := newServerWithConfig(t, "./configs/reload/test.conf") - defer removeFile(t, config) defer server.Shutdown() loaded := server.ConfigTime() @@ -178,7 +176,6 @@ func TestConfigReloadUnsupported(t *testing.T) { // server is changed to support change of listen spec). func TestConfigReloadUnsupportedHotSwapping(t *testing.T) { server, _, config := newServerWithContent(t, []byte("listen: 127.0.0.1:-1")) - defer removeFile(t, config) defer server.Shutdown() loaded := server.ConfigTime() @@ -201,7 +198,6 @@ func TestConfigReloadUnsupportedHotSwapping(t *testing.T) { // Ensure Reload returns an error when reloading from a bad config file. func TestConfigReloadInvalidConfig(t *testing.T) { server, _, config := newServerWithConfig(t, "./configs/reload/test.conf") - defer removeFile(t, config) defer server.Shutdown() loaded := server.ConfigTime() @@ -250,12 +246,10 @@ func TestConfigReloadInvalidConfig(t *testing.T) { // Ensure Reload returns nil and the config is changed on success. func TestConfigReload(t *testing.T) { server, opts, config := runReloadServerWithConfig(t, "./configs/reload/test.conf") - defer removeFile(t, config) defer removeFile(t, "nats-server.pid") defer removeFile(t, "nats-server.log") defer server.Shutdown() - dir := filepath.Dir(config) var content []byte if runtime.GOOS != "windows" { content = []byte(` @@ -263,8 +257,7 @@ func TestConfigReload(t *testing.T) { syslog: true # enable on reload `) } - platformConf := filepath.Join(dir, "platform.conf") - defer removeFile(t, platformConf) + platformConf := filepath.Join(filepath.Dir(config), "platform.conf") if err := os.WriteFile(platformConf, content, 0666); err != nil { t.Fatalf("Unable to write config file: %v", err) } @@ -380,7 +373,6 @@ func TestConfigReload(t *testing.T) { // ensure reconnect succeeds when the client provides a cert. func TestConfigReloadRotateTLS(t *testing.T) { server, opts, config := runReloadServerWithConfig(t, "./configs/reload/tls_test.conf") - defer removeFile(t, config) defer server.Shutdown() // Ensure we can connect as a sanity check. @@ -435,7 +427,6 @@ func TestConfigReloadRotateTLS(t *testing.T) { // reconnect fails, then ensure reconnect succeeds when using secure. func TestConfigReloadEnableTLS(t *testing.T) { server, opts, config := runReloadServerWithConfig(t, "./configs/reload/basic.conf") - defer removeFile(t, config) defer server.Shutdown() // Ensure we can connect as a sanity check. @@ -467,7 +458,6 @@ func TestConfigReloadEnableTLS(t *testing.T) { // without secure. func TestConfigReloadDisableTLS(t *testing.T) { server, opts, config := runReloadServerWithConfig(t, "./configs/reload/tls_test.conf") - defer removeFile(t, config) defer server.Shutdown() // Ensure we can connect as a sanity check. @@ -503,7 +493,6 @@ func TestConfigReloadDisableTLS(t *testing.T) { // then ensure reconnect succeeds when using the correct credentials. func TestConfigReloadRotateUserAuthentication(t *testing.T) { server, opts, config := runReloadServerWithConfig(t, "./configs/reload/single_user_authentication_1.conf") - defer removeFile(t, config) defer server.Shutdown() // Ensure we can connect as a sanity check. @@ -566,7 +555,6 @@ func TestConfigReloadRotateUserAuthentication(t *testing.T) { // ensure reconnect succeeds when using the correct credentials. func TestConfigReloadEnableUserAuthentication(t *testing.T) { server, opts, config := runReloadServerWithConfig(t, "./configs/reload/basic.conf") - defer removeFile(t, config) defer server.Shutdown() // Ensure we can connect as a sanity check. @@ -628,7 +616,6 @@ func TestConfigReloadEnableUserAuthentication(t *testing.T) { // with no credentials succeeds. func TestConfigReloadDisableUserAuthentication(t *testing.T) { server, opts, config := runReloadServerWithConfig(t, "./configs/reload/single_user_authentication_1.conf") - defer removeFile(t, config) defer server.Shutdown() // Ensure we can connect as a sanity check. @@ -662,7 +649,6 @@ func TestConfigReloadDisableUserAuthentication(t *testing.T) { // ensure reconnect succeeds when using the correct token. func TestConfigReloadRotateTokenAuthentication(t *testing.T) { server, opts, config := runReloadServerWithConfig(t, "./configs/reload/token_authentication_1.conf") - defer removeFile(t, config) defer server.Shutdown() disconnected := make(chan struct{}) @@ -720,7 +706,6 @@ func TestConfigReloadRotateTokenAuthentication(t *testing.T) { // succeeds when using the correct token. func TestConfigReloadEnableTokenAuthentication(t *testing.T) { server, opts, config := runReloadServerWithConfig(t, "./configs/reload/basic.conf") - defer removeFile(t, config) defer server.Shutdown() // Ensure we can connect as a sanity check. @@ -782,7 +767,6 @@ func TestConfigReloadEnableTokenAuthentication(t *testing.T) { // with no token succeeds. func TestConfigReloadDisableTokenAuthentication(t *testing.T) { server, opts, config := runReloadServerWithConfig(t, "./configs/reload/token_authentication_1.conf") - defer removeFile(t, config) defer server.Shutdown() // Ensure we can connect as a sanity check. @@ -816,7 +800,6 @@ func TestConfigReloadDisableTokenAuthentication(t *testing.T) { // ensure reconnect succeeds when using the correct credentials. func TestConfigReloadRotateUsersAuthentication(t *testing.T) { server, opts, config := runReloadServerWithConfig(t, "./configs/reload/multiple_users_1.conf") - defer removeFile(t, config) defer server.Shutdown() // Ensure we can connect as a sanity check. @@ -904,7 +887,6 @@ func TestConfigReloadRotateUsersAuthentication(t *testing.T) { // succeeds when using the correct credentials. func TestConfigReloadEnableUsersAuthentication(t *testing.T) { server, opts, config := runReloadServerWithConfig(t, "./configs/reload/basic.conf") - defer removeFile(t, config) defer server.Shutdown() // Ensure we can connect as a sanity check. @@ -966,7 +948,6 @@ func TestConfigReloadEnableUsersAuthentication(t *testing.T) { // with no credentials succeeds. func TestConfigReloadDisableUsersAuthentication(t *testing.T) { server, opts, config := runReloadServerWithConfig(t, "./configs/reload/multiple_users_1.conf") - defer removeFile(t, config) defer server.Shutdown() // Ensure we can connect as a sanity check. @@ -1000,7 +981,6 @@ func TestConfigReloadDisableUsersAuthentication(t *testing.T) { // closed and publishes fail, then ensure the new permissions succeed. func TestConfigReloadChangePermissions(t *testing.T) { server, opts, config := runReloadServerWithConfig(t, "./configs/reload/authorization_1.conf") - defer removeFile(t, config) defer server.Shutdown() addr := fmt.Sprintf("nats://%s:%d", opts.Host, opts.Port) @@ -1234,7 +1214,6 @@ func TestConfigReloadChangePermissions(t *testing.T) { // host. func TestConfigReloadClusterHostUnsupported(t *testing.T) { server, _, config := runReloadServerWithConfig(t, "./configs/reload/srv_a_1.conf") - defer removeFile(t, config) defer server.Shutdown() // Attempt to change cluster listen host. @@ -1250,7 +1229,6 @@ func TestConfigReloadClusterHostUnsupported(t *testing.T) { // port. func TestConfigReloadClusterPortUnsupported(t *testing.T) { server, _, config := runReloadServerWithConfig(t, "./configs/reload/srv_a_1.conf") - defer removeFile(t, config) defer server.Shutdown() // Attempt to change cluster listen port. @@ -1268,11 +1246,9 @@ func TestConfigReloadClusterPortUnsupported(t *testing.T) { // longer flow until reloading with the correct credentials. func TestConfigReloadEnableClusterAuthorization(t *testing.T) { srvb, srvbOpts, srvbConfig := runReloadServerWithConfig(t, "./configs/reload/srv_b_1.conf") - defer removeFile(t, srvbConfig) defer srvb.Shutdown() srva, srvaOpts, srvaConfig := runReloadServerWithConfig(t, "./configs/reload/srv_a_1.conf") - defer removeFile(t, srvaConfig) defer srva.Shutdown() checkClusterFormed(t, srva, srvb) @@ -1366,11 +1342,9 @@ func TestConfigReloadEnableClusterAuthorization(t *testing.T) { // still flow. func TestConfigReloadDisableClusterAuthorization(t *testing.T) { srvb, srvbOpts, srvbConfig := runReloadServerWithConfig(t, "./configs/reload/srv_b_2.conf") - defer removeFile(t, srvbConfig) defer srvb.Shutdown() - srva, srvaOpts, srvaConfig := runReloadServerWithConfig(t, "./configs/reload/srv_a_2.conf") - defer removeFile(t, srvaConfig) + srva, srvaOpts, _ := runReloadServerWithConfig(t, "./configs/reload/srv_a_2.conf") defer srva.Shutdown() checkClusterFormed(t, srva, srvb) @@ -1446,12 +1420,10 @@ func TestConfigReloadDisableClusterAuthorization(t *testing.T) { // reloading with a different route and ensuring messages flow through the new // cluster. func TestConfigReloadClusterRoutes(t *testing.T) { - srvb, srvbOpts, srvbConfig := runReloadServerWithConfig(t, "./configs/reload/srv_b_1.conf") - defer removeFile(t, srvbConfig) + srvb, srvbOpts, _ := runReloadServerWithConfig(t, "./configs/reload/srv_b_1.conf") defer srvb.Shutdown() srva, srvaOpts, srvaConfig := runReloadServerWithConfig(t, "./configs/reload/srv_a_1.conf") - defer removeFile(t, srvaConfig) defer srva.Shutdown() checkClusterFormed(t, srva, srvb) @@ -1553,7 +1525,6 @@ func TestConfigReloadClusterRemoveSolicitedRoutes(t *testing.T) { defer srvb.Shutdown() srva, srvaOpts, srvaConfig := runReloadServerWithConfig(t, "./configs/reload/srv_a_1.conf") - defer removeFile(t, srvaConfig) defer srva.Shutdown() checkClusterFormed(t, srva, srvb) @@ -1641,7 +1612,6 @@ func TestConfigReloadClusterAdvertise(t *testing.T) { listen: "0.0.0.0:-1" } `)) - defer removeFile(t, conf) defer s.Shutdown() orgClusterPort := s.ClusterAddr().Port @@ -1713,7 +1683,6 @@ func TestConfigReloadClusterNoAdvertise(t *testing.T) { listen: "0.0.0.0:-1" } `)) - defer removeFile(t, conf) defer s.Shutdown() s.mu.Lock() @@ -1764,7 +1733,6 @@ func TestConfigReloadClusterName(t *testing.T) { listen: "0.0.0.0:-1" } `)) - defer removeFile(t, conf) defer s.Shutdown() // Update config with a new cluster name. @@ -1782,8 +1750,10 @@ func TestConfigReloadClusterName(t *testing.T) { } func TestConfigReloadMaxSubsUnsupported(t *testing.T) { - s, _, conf := runReloadServerWithContent(t, []byte(`max_subs: 1`)) - defer removeFile(t, conf) + s, _, conf := runReloadServerWithContent(t, []byte(` + port: -1 + max_subs: 1 + `)) defer s.Shutdown() if err := os.WriteFile(conf, []byte(`max_subs: 10`), 0666); err != nil { @@ -1796,7 +1766,6 @@ func TestConfigReloadMaxSubsUnsupported(t *testing.T) { func TestConfigReloadClientAdvertise(t *testing.T) { s, _, conf := runReloadServerWithContent(t, []byte(`listen: "0.0.0.0:-1"`)) - defer removeFile(t, conf) defer s.Shutdown() orgPort := s.Addr().(*net.TCPAddr).Port @@ -1843,7 +1812,6 @@ func TestConfigReloadClientAdvertise(t *testing.T) { // max connections of one, and ensuring one client is disconnected. func TestConfigReloadMaxConnections(t *testing.T) { server, opts, config := runReloadServerWithConfig(t, "./configs/reload/basic.conf") - defer removeFile(t, config) defer server.Shutdown() // Make two connections. @@ -1898,7 +1866,6 @@ func TestConfigReloadMaxConnections(t *testing.T) { // and disconnects the client. func TestConfigReloadMaxPayload(t *testing.T) { server, opts, config := runReloadServerWithConfig(t, "./configs/reload/basic.conf") - defer removeFile(t, config) defer server.Shutdown() addr := fmt.Sprintf("nats://%s:%d", opts.Host, server.Addr().(*net.TCPAddr).Port) @@ -1963,7 +1930,6 @@ func TestConfigReloadMaxPayload(t *testing.T) { func TestConfigReloadRotateFiles(t *testing.T) { server, _, config := runReloadServerWithConfig(t, "./configs/reload/file_rotate.conf") defer func() { - removeFile(t, config) removeFile(t, "log1.txt") removeFile(t, "nats-server1.pid") }() @@ -2016,7 +1982,6 @@ func TestConfigReloadClusterWorks(t *testing.T) { ] }` confB := createConfFile(t, []byte(fmt.Sprintf(confBTemplate, 3))) - defer removeFile(t, confB) confATemplate := ` listen: -1 @@ -2032,7 +1997,6 @@ func TestConfigReloadClusterWorks(t *testing.T) { ] }` confA := createConfFile(t, []byte(fmt.Sprintf(confATemplate, 3))) - defer removeFile(t, confA) srvb, _ := RunServerWithConfig(confB) defer srvb.Shutdown() @@ -2094,7 +2058,6 @@ func TestConfigReloadClusterPerms(t *testing.T) { no_sys_acc: true ` confA := createConfFile(t, []byte(fmt.Sprintf(confATemplate, `"foo"`, `"foo"`))) - defer removeFile(t, confA) srva, _ := RunServerWithConfig(confA) defer srva.Shutdown() @@ -2117,7 +2080,6 @@ func TestConfigReloadClusterPerms(t *testing.T) { no_sys_acc: true ` confB := createConfFile(t, []byte(fmt.Sprintf(confBTemplate, `"foo"`, `"foo"`, srva.ClusterAddr().Port))) - defer removeFile(t, confB) srvb, _ := RunServerWithConfig(confB) defer srvb.Shutdown() @@ -2292,7 +2254,6 @@ func TestConfigReloadClusterPermsImport(t *testing.T) { no_sys_acc: true ` confA := createConfFile(t, []byte(fmt.Sprintf(confATemplate, `["foo", "bar"]`))) - defer removeFile(t, confA) srva, _ := RunServerWithConfig(confA) defer srva.Shutdown() @@ -2307,7 +2268,6 @@ func TestConfigReloadClusterPermsImport(t *testing.T) { no_sys_acc: true ` confB := createConfFile(t, []byte(fmt.Sprintf(confBTemplate, srva.ClusterAddr().Port))) - defer removeFile(t, confB) srvb, _ := RunServerWithConfig(confB) defer srvb.Shutdown() @@ -2389,7 +2349,6 @@ func TestConfigReloadClusterPermsExport(t *testing.T) { no_sys_acc: true ` confA := createConfFile(t, []byte(fmt.Sprintf(confATemplate, `["foo", "bar"]`))) - defer removeFile(t, confA) srva, _ := RunServerWithConfig(confA) defer srva.Shutdown() @@ -2404,7 +2363,6 @@ func TestConfigReloadClusterPermsExport(t *testing.T) { no_sys_acc: true ` confB := createConfFile(t, []byte(fmt.Sprintf(confBTemplate, srva.ClusterAddr().Port))) - defer removeFile(t, confB) srvb, _ := RunServerWithConfig(confB) defer srvb.Shutdown() @@ -2485,7 +2443,6 @@ func TestConfigReloadClusterPermsOldServer(t *testing.T) { } ` confA := createConfFile(t, []byte(fmt.Sprintf(confATemplate, `["foo", "bar"]`))) - defer removeFile(t, confA) srva, _ := RunServerWithConfig(confA) defer srva.Shutdown() @@ -2571,7 +2528,6 @@ func TestConfigReloadAccountUsers(t *testing.T) { } } `)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -2756,7 +2712,6 @@ func TestConfigReloadAccountNKeyUsers(t *testing.T) { } } `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -2902,7 +2857,6 @@ func TestConfigReloadAccountStreamsImportExport(t *testing.T) { // nats.io account imports "foo.*" from synadia // nats.io account imports "private.natsio.*" from synadia with prefix "ivan" conf := createConfFile(t, []byte(fmt.Sprintf(template, `"foo.*"`, `"xxx"`, `"foo.*"`, `"ivan"`))) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -3093,7 +3047,6 @@ func TestConfigReloadAccountServicesImportExport(t *testing.T) { port: -1 } `)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -3244,7 +3197,6 @@ func TestConfigReloadNotPreventedByGateways(t *testing.T) { no_sys_acc: true ` conf := createConfFile(t, []byte(fmt.Sprintf(confTemplate, "", "5"))) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -3261,11 +3213,10 @@ func TestConfigReloadNotPreventedByGateways(t *testing.T) { func TestConfigReloadBoolFlags(t *testing.T) { defer func() { FlagSnapshot = nil }() - logfile := "logtime.log" - defer removeFile(t, logfile) + logfile := filepath.Join(t.TempDir(), "logtime.log") template := ` listen: "127.0.0.1:-1" - logfile: "logtime.log" + logfile: "%s" %s ` @@ -3646,8 +3597,7 @@ func TestConfigReloadBoolFlags(t *testing.T) { }, } { t.Run(test.name, func(t *testing.T) { - conf := createConfFile(t, []byte(fmt.Sprintf(template, test.content))) - defer removeFile(t, conf) + conf := createConfFile(t, []byte(fmt.Sprintf(template, logfile, test.content))) fs := flag.NewFlagSet("test", flag.ContinueOnError) var args []string @@ -3678,7 +3628,6 @@ func TestConfigReloadBoolFlags(t *testing.T) { func TestConfigReloadMaxControlLineWithClients(t *testing.T) { server, opts, config := runReloadServerWithConfig(t, "./configs/reload/basic.conf") - defer removeFile(t, config) defer server.Shutdown() // Ensure we can connect as a sanity check. @@ -3729,7 +3678,6 @@ func TestConfigReloadIgnoreCustomAuth(t *testing.T) { conf := createConfFile(t, []byte(` port: -1 `)) - defer removeFile(t, conf) opts := LoadConfig(conf) ca := &testCustomAuth{} @@ -3755,7 +3703,6 @@ func TestConfigReloadLeafNodeRandomPort(t *testing.T) { port: -1 } `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -3791,7 +3738,6 @@ func TestConfigReloadLeafNodeWithTLS(t *testing.T) { } ` conf1 := createConfFile(t, []byte(fmt.Sprintf(template, ""))) - defer removeFile(t, conf1) s1, o1 := RunServerWithConfig(conf1) defer s1.Shutdown() @@ -3815,7 +3761,6 @@ func TestConfigReloadLeafNodeWithTLS(t *testing.T) { ] } `, u.String()))) - defer removeFile(t, conf2) o2, err := ProcessConfigFile(conf2) if err != nil { t.Fatalf("Error processing config file: %v", err) @@ -3863,7 +3808,6 @@ func TestConfigReloadLeafNodeWithRemotesNoChanges(t *testing.T) { ` config := fmt.Sprintf(template, "A") conf := createConfFile(t, []byte(config)) - defer removeFile(t, conf) o, err := ProcessConfigFile(conf) if err != nil { t.Fatalf("Error processing config file: %v", err) @@ -3886,7 +3830,6 @@ func TestConfigReloadAndVarz(t *testing.T) { %s ` conf := createConfFile(t, []byte(fmt.Sprintf(template, ""))) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -3927,7 +3870,6 @@ func TestConfigReloadConnectErrReports(t *testing.T) { %s ` conf := createConfFile(t, []byte(fmt.Sprintf(template, "", ""))) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -4071,7 +4013,6 @@ func TestConfigReloadAccountResolverTLSConfig(t *testing.T) { ca_file: "../test/configs/certs/ca.pem" } `))) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -4158,7 +4099,6 @@ func TestLoggingReload(t *testing.T) { ` conf := createConfFile(t, []byte(commonCfg)) - defer removeFile(t, conf) defer removeFile(t, "off-pre.log") defer removeFile(t, "on.log") @@ -4245,7 +4185,6 @@ func TestReloadValidate(t *testing.T) { ] } `)) - defer removeFile(t, confFileName) srv, _ := RunServerWithConfig(confFileName) if srv == nil { t.Fatal("Server did not start") @@ -4290,7 +4229,6 @@ func TestConfigReloadAccounts(t *testing.T) { } } `)) - defer removeFile(t, conf) s, o := RunServerWithConfig(conf) defer s.Shutdown() @@ -4433,7 +4371,6 @@ func TestConfigReloadDefaultSystemAccount(t *testing.T) { } } `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -4485,7 +4422,6 @@ func TestConfigReloadAccountMappings(t *testing.T) { } } `)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() diff --git a/server/routes_test.go b/server/routes_test.go index af76d617..05eb3f63 100644 --- a/server/routes_test.go +++ b/server/routes_test.go @@ -1449,8 +1449,7 @@ func TestTLSRoutesCertificateImplicitAllowFail(t *testing.T) { func testTLSRoutesCertificateImplicitAllow(t *testing.T, pass bool) { // Base config for the servers - cfg := createFile(t, "cfg") - defer removeFile(t, cfg.Name()) + cfg := createTempFile(t, "cfg") cfg.WriteString(fmt.Sprintf(` cluster { tls { @@ -1684,7 +1683,6 @@ func TestRouteSaveTLSName(t *testing.T) { } } `)) - defer removeFile(t, c1Conf) s1, o1 := RunServerWithConfig(c1Conf) defer s1.Shutdown() @@ -1702,7 +1700,6 @@ func TestRouteSaveTLSName(t *testing.T) { } ` c2And3Conf := createConfFile(t, []byte(fmt.Sprintf(tmpl, "localhost", o1.Cluster.Port))) - defer removeFile(t, c2And3Conf) s2, _ := RunServerWithConfig(c2And3Conf) defer s2.Shutdown() diff --git a/server/server_test.go b/server/server_test.go index 5116c7b4..ef85ac5a 100644 --- a/server/server_test.go +++ b/server/server_test.go @@ -1603,10 +1603,9 @@ func TestConnectErrorReports(t *testing.T) { t.Fatalf("Expected default value to be %v, got %v", DEFAULT_CONNECT_ERROR_REPORTS, ra) } - tmpFile := createFile(t, "") + tmpFile := createTempFile(t, "") log := tmpFile.Name() tmpFile.Close() - defer removeFile(t, log) remoteURLs := RoutesFromStr("nats://127.0.0.1:1234") @@ -1755,10 +1754,9 @@ func TestReconnectErrorReports(t *testing.T) { t.Fatalf("Expected default value to be %v, got %v", DEFAULT_RECONNECT_ERROR_REPORTS, ra) } - tmpFile := createFile(t, "") + tmpFile := createTempFile(t, "") log := tmpFile.Name() tmpFile.Close() - defer removeFile(t, log) csOpts := DefaultOptions() csOpts.Cluster.Port = -1 @@ -1941,17 +1939,13 @@ func TestReconnectErrorReports(t *testing.T) { } func TestServerLogsConfigurationFile(t *testing.T) { - tmpDir := createDir(t, "_nats-server") - defer removeDir(t, tmpDir) - - file := createFileAtDir(t, tmpDir, "nats_server_log_") + file := createTempFile(t, "nats_server_log_") file.Close() conf := createConfFile(t, []byte(fmt.Sprintf(` port: -1 logfile: '%s' `, file.Name()))) - defer removeFile(t, conf) o := LoadConfig(conf) o.ConfigFile = file.Name() diff --git a/server/signal_test.go b/server/signal_test.go index bc3ba113..5520bb6b 100644 --- a/server/signal_test.go +++ b/server/signal_test.go @@ -21,6 +21,7 @@ import ( "fmt" "os" "os/exec" + "path/filepath" "strings" "syscall" "testing" @@ -31,9 +32,7 @@ import ( ) func TestSignalToReOpenLogFile(t *testing.T) { - logFile := "test.log" - defer removeFile(t, logFile) - defer removeFile(t, logFile+".bak") + logFile := filepath.Join(t.TempDir(), "test.log") opts := &Options{ Host: "127.0.0.1", Port: -1, diff --git a/server/trust_test.go b/server/trust_test.go index 734d2457..9296b7db 100644 --- a/server/trust_test.go +++ b/server/trust_test.go @@ -84,7 +84,6 @@ func TestTrustedKeysOptions(t *testing.T) { func TestTrustConfigOption(t *testing.T) { confFileName := createConfFile(t, []byte(fmt.Sprintf("trusted = %q", t1))) - defer removeFile(t, confFileName) opts, err := ProcessConfigFile(confFileName) if err != nil { t.Fatalf("Error parsing config: %v", err) @@ -97,7 +96,6 @@ func TestTrustConfigOption(t *testing.T) { } confFileName = createConfFile(t, []byte(fmt.Sprintf("trusted = [%q, %q]", t1, t2))) - defer removeFile(t, confFileName) opts, err = ProcessConfigFile(confFileName) if err != nil { t.Fatalf("Error parsing config: %v", err) @@ -114,7 +112,6 @@ func TestTrustConfigOption(t *testing.T) { // Now do a bad one. confFileName = createConfFile(t, []byte(fmt.Sprintf("trusted = [%q, %q]", t1, "bad"))) - defer removeFile(t, confFileName) _, err = ProcessConfigFile(confFileName) if err == nil { t.Fatalf("Expected an error parsing trust keys with a bad key") diff --git a/server/websocket_test.go b/server/websocket_test.go index cffbf22a..6511f7ee 100644 --- a/server/websocket_test.go +++ b/server/websocket_test.go @@ -1609,7 +1609,6 @@ func TestWSParseOptions(t *testing.T) { } { t.Run(test.name, func(t *testing.T) { conf := createConfFile(t, []byte(test.content)) - defer removeFile(t, conf) o, err := ProcessConfigFile(conf) if test.err != _EMPTY_ { if err == nil || !strings.Contains(err.Error(), test.err) { @@ -3393,7 +3392,6 @@ func TestWSBindToProperAccount(t *testing.T) { no_tls: true } `, jwt.ConnectionTypeStandard, strings.ToLower(jwt.ConnectionTypeWebsocket)))) // on purpose use lower case to ensure that it is converted. - defer removeFile(t, conf) s, o := RunServerWithConfig(conf) defer s.Shutdown() @@ -3866,7 +3864,6 @@ func TestWSReloadTLSConfig(t *testing.T) { conf := createConfFile(t, []byte(fmt.Sprintf(template, "../test/configs/certs/server-noip.pem", "../test/configs/certs/server-key-noip.pem"))) - defer removeFile(t, conf) s, o := RunServerWithConfig(conf) defer s.Shutdown() diff --git a/test/accounts_cycles_test.go b/test/accounts_cycles_test.go index 672c16a4..00ff0059 100644 --- a/test/accounts_cycles_test.go +++ b/test/accounts_cycles_test.go @@ -37,7 +37,6 @@ func TestAccountCycleService(t *testing.T) { } } `)) - defer removeFile(t, conf) if _, err := server.ProcessConfigFile(conf); err == nil || !strings.Contains(err.Error(), server.ErrImportFormsCycle.Error()) { t.Fatalf("Expected an error on cycle service import, got none") @@ -55,7 +54,6 @@ func TestAccountCycleService(t *testing.T) { } } `)) - defer removeFile(t, conf) if _, err := server.ProcessConfigFile(conf); err == nil || !strings.Contains(err.Error(), server.ErrImportFormsCycle.Error()) { t.Fatalf("Expected an error on cycle service import, got none") @@ -77,7 +75,6 @@ func TestAccountCycleService(t *testing.T) { } } `)) - defer removeFile(t, conf) if _, err := server.ProcessConfigFile(conf); err == nil || !strings.Contains(err.Error(), server.ErrImportFormsCycle.Error()) { t.Fatalf("Expected an error on cycle service import, got none") @@ -97,7 +94,6 @@ func TestAccountCycleStream(t *testing.T) { } } `)) - defer removeFile(t, conf) if _, err := server.ProcessConfigFile(conf); err == nil || !strings.Contains(err.Error(), server.ErrImportFormsCycle.Error()) { t.Fatalf("Expected an error on cyclic import, got none") } @@ -116,7 +112,6 @@ func TestAccountCycleStreamWithMapping(t *testing.T) { } } `)) - defer removeFile(t, conf) if _, err := server.ProcessConfigFile(conf); err == nil || !strings.Contains(err.Error(), server.ErrImportFormsCycle.Error()) { t.Fatalf("Expected an error on cyclic import, got none") } @@ -139,7 +134,6 @@ func TestAccountCycleNonCycleStreamWithMapping(t *testing.T) { } } `)) - defer removeFile(t, conf) if _, err := server.ProcessConfigFile(conf); err != nil { t.Fatalf("Expected no error but got %s", err) } @@ -158,7 +152,6 @@ func TestAccountCycleServiceCycleWithMapping(t *testing.T) { } } `)) - defer removeFile(t, conf) if _, err := server.ProcessConfigFile(conf); err == nil || !strings.Contains(err.Error(), server.ErrImportFormsCycle.Error()) { t.Fatalf("Expected an error on cycle service import, got none") } @@ -181,7 +174,6 @@ func TestAccountCycleServiceNonCycle(t *testing.T) { } } `)) - defer removeFile(t, conf) if _, err := server.ProcessConfigFile(conf); err != nil { t.Fatalf("Expected no error but got %s", err) @@ -208,7 +200,6 @@ func TestAccountCycleServiceNonCycleChain(t *testing.T) { } } `)) - defer removeFile(t, conf) if _, err := server.ProcessConfigFile(conf); err != nil { t.Fatalf("Expected no error but got %s", err) @@ -231,7 +222,6 @@ func TestServiceImportReplyMatchCycle(t *testing.T) { } no_auth_user: d `)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -275,7 +265,6 @@ func TestServiceImportReplyMatchCycleMultiHops(t *testing.T) { } no_auth_user: d `)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -360,7 +349,6 @@ func TestAccountSubjectMapping(t *testing.T) { "foo.*.*" : "foo.$1.{{wildcard(2)}}.{{partition(10,1,2)}}" } `)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -443,7 +431,6 @@ func TestAccountImportSubjectMapping(t *testing.T) { } } `)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) diff --git a/test/client_auth_test.go b/test/client_auth_test.go index a5185a99..a57aa91a 100644 --- a/test/client_auth_test.go +++ b/test/client_auth_test.go @@ -65,18 +65,17 @@ func TestMultipleUserAuth(t *testing.T) { const testToken = "$2a$05$3sSWEVA1eMCbV0hWavDjXOx.ClBjI6u1CuUdLqf22cbJjXsnzz8/." func TestTokenInConfig(t *testing.T) { - confFileName := "test.conf" - defer removeFile(t, confFileName) content := ` listen: 127.0.0.1:4567 authorization={ token: ` + testToken + ` timeout: 5 }` - if err := os.WriteFile(confFileName, []byte(content), 0666); err != nil { + confFile := createConfFile(t, []byte(content)) + if err := os.WriteFile(confFile, []byte(content), 0666); err != nil { t.Fatalf("Error writing config file: %v", err) } - s, opts := RunServerWithConfig(confFileName) + s, opts := RunServerWithConfig(confFile) defer s.Shutdown() url := fmt.Sprintf("nats://test@%s:%d/", opts.Host, opts.Port) diff --git a/test/cluster_test.go b/test/cluster_test.go index eee1623b..86ba7c0c 100644 --- a/test/cluster_test.go +++ b/test/cluster_test.go @@ -542,7 +542,6 @@ func TestClusterNameOption(t *testing.T) { listen: 127.0.0.1:-1 } `)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -563,7 +562,6 @@ func TestEphemeralClusterName(t *testing.T) { listen: 127.0.0.1:-1 } `)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -600,7 +598,6 @@ func TestClusterNameConflictsDropRoutes(t *testing.T) { listen: 127.0.0.1:5244 } `)) - defer removeFile(t, conf) s1, _ := RunServerWithConfig(conf) defer s1.Shutdown() @@ -614,7 +611,6 @@ func TestClusterNameConflictsDropRoutes(t *testing.T) { routes = [nats-route://127.0.0.1:5244] } `)) - defer removeFile(t, conf2) s2, _ := RunServerWithConfig(conf2) defer s2.Shutdown() @@ -635,7 +631,6 @@ func TestClusterNameDynamicNegotiation(t *testing.T) { listen: 127.0.0.1:-1 cluster {listen: 127.0.0.1:5244} `)) - defer removeFile(t, conf) seed, _ := RunServerWithConfig(conf) defer seed.Shutdown() @@ -647,7 +642,6 @@ func TestClusterNameDynamicNegotiation(t *testing.T) { routes = [nats-route://127.0.0.1:5244] } `)) - defer removeFile(t, oconf) // Create a random number of additional servers, up to 20. numServers := rand.Intn(20) + 1 diff --git a/test/gateway_test.go b/test/gateway_test.go index 91e2cb49..3975a148 100644 --- a/test/gateway_test.go +++ b/test/gateway_test.go @@ -621,7 +621,6 @@ func TestGatewayTLSMixedIPAndDNS(t *testing.T) { listen: "127.0.0.1:-1" } `)) - defer removeFile(t, confA1) srvA1, optsA1 := RunServerWithConfig(confA1) defer srvA1.Shutdown() @@ -646,7 +645,6 @@ func TestGatewayTLSMixedIPAndDNS(t *testing.T) { ` confA2 := createConfFile(t, []byte(fmt.Sprintf(confA2Template, optsA1.Cluster.Host, optsA1.Cluster.Port))) - defer removeFile(t, confA2) srvA2, optsA2 := RunServerWithConfig(confA2) defer srvA2.Shutdown() diff --git a/test/leafnode_test.go b/test/leafnode_test.go index abd84fd7..4181d4e0 100644 --- a/test/leafnode_test.go +++ b/test/leafnode_test.go @@ -1138,7 +1138,6 @@ func TestLeafNodeBasicAuth(t *testing.T) { } ` conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -1205,7 +1204,6 @@ func TestLeafNodeTLS(t *testing.T) { } ` conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -1244,7 +1242,6 @@ func TestLeafNodeTLSConnCloseEarly(t *testing.T) { } ` conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -1293,7 +1290,6 @@ func TestLeafNodeTLSMixIP(t *testing.T) { } ` conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -1311,7 +1307,6 @@ func TestLeafNodeTLSMixIP(t *testing.T) { } ` slconf := createConfFile(t, []byte(fmt.Sprintf(slContent, opts.LeafNode.Port, opts.LeafNode.Port))) - defer removeFile(t, slconf) // This will fail but we want to make sure in the correct way, not with // TLS issue because we used an IP for serverName. @@ -1387,8 +1382,7 @@ func runSolicitWithCredentials(t *testing.T, opts *server.Options, creds string) } func TestLeafNodeOperatorModel(t *testing.T) { - s, opts, conf := runLeafNodeOperatorServer(t) - defer removeFile(t, conf) + s, opts, _ := runLeafNodeOperatorServer(t) defer s.Shutdown() // Make sure we get disconnected without proper credentials etc. @@ -1415,18 +1409,15 @@ func TestLeafNodeOperatorModel(t *testing.T) { } seed, _ := kp.Seed() mycreds := genCredsFile(t, ujwt, seed) - defer removeFile(t, mycreds) - sl, _, lnconf := runSolicitWithCredentials(t, opts, mycreds) - defer removeFile(t, lnconf) + sl, _, _ := runSolicitWithCredentials(t, opts, mycreds) defer sl.Shutdown() checkLeafNodeConnected(t, s) } func TestLeafNodeUserPermsForConnection(t *testing.T) { - s, opts, conf := runLeafNodeOperatorServer(t) - defer removeFile(t, conf) + s, opts, _ := runLeafNodeOperatorServer(t) defer s.Shutdown() // Setup account and a user that will be used by the remote leaf node server. @@ -1446,7 +1437,6 @@ func TestLeafNodeUserPermsForConnection(t *testing.T) { } seed, _ := kp.Seed() mycreds := genCredsFile(t, ujwt, seed) - defer removeFile(t, mycreds) content := ` port: -1 @@ -1463,7 +1453,6 @@ func TestLeafNodeUserPermsForConnection(t *testing.T) { ` config := fmt.Sprintf(content, opts.LeafNode.Port, mycreds) lnconf := createConfFile(t, []byte(config)) - defer removeFile(t, lnconf) sl, _ := RunServerWithConfig(lnconf) defer sl.Shutdown() @@ -1524,8 +1513,7 @@ func TestLeafNodeUserPermsForConnection(t *testing.T) { func TestLeafNodeMultipleAccounts(t *testing.T) { // So we will create a main server with two accounts. The remote server, acting as a leaf node, will simply have // the $G global account and no auth. Make sure things work properly here. - s, opts, conf := runLeafNodeOperatorServer(t) - defer removeFile(t, conf) + s, opts, _ := runLeafNodeOperatorServer(t) defer s.Shutdown() // Setup the two accounts for this server. @@ -1544,10 +1532,8 @@ func TestLeafNodeMultipleAccounts(t *testing.T) { // Create the leaf node server using the first account. seed, _ := kp1.Seed() mycreds := genCredsFile(t, ujwt1, seed) - defer removeFile(t, mycreds) - sl, lopts, lnconf := runSolicitWithCredentials(t, opts, mycreds) - defer removeFile(t, lnconf) + sl, lopts, _ := runSolicitWithCredentials(t, opts, mycreds) defer sl.Shutdown() checkLeafNodeConnected(t, s) @@ -1736,8 +1722,7 @@ func TestLeafNodeOperatorAndPermissions(t *testing.T) { } func TestLeafNodeSignerUser(t *testing.T) { - s, opts, conf := runLeafNodeOperatorServer(t) - defer removeFile(t, conf) + s, opts, _ := runLeafNodeOperatorServer(t) defer s.Shutdown() // Setup the two accounts for this server. @@ -1802,10 +1787,8 @@ func TestLeafNodeSignerUser(t *testing.T) { // Create the leaf node server using the first account. seed, _ := kp1.Seed() mycreds := genCredsFile(t, ujwt1, seed) - defer removeFile(t, mycreds) - sl, _, lnconf := runSolicitWithCredentials(t, opts, mycreds) - defer removeFile(t, lnconf) + sl, _, _ := runSolicitWithCredentials(t, opts, mycreds) defer sl.Shutdown() checkLeafNodeConnected(t, s) @@ -1814,8 +1797,7 @@ func TestLeafNodeSignerUser(t *testing.T) { func TestLeafNodeExportsImports(t *testing.T) { // So we will create a main server with two accounts. The remote server, acting as a leaf node, will simply have // the $G global account and no auth. Make sure things work properly here. - s, opts, conf := runLeafNodeOperatorServer(t) - defer removeFile(t, conf) + s, opts, _ := runLeafNodeOperatorServer(t) defer s.Shutdown() // Setup the two accounts for this server. @@ -1866,10 +1848,8 @@ func TestLeafNodeExportsImports(t *testing.T) { // Create the leaf node server using the first account. seed, _ := kp1.Seed() mycreds := genCredsFile(t, ujwt1, seed) - defer removeFile(t, mycreds) - sl, lopts, lnconf := runSolicitWithCredentials(t, opts, mycreds) - defer removeFile(t, lnconf) + sl, lopts, _ := runSolicitWithCredentials(t, opts, mycreds) defer sl.Shutdown() checkLeafNodeConnected(t, s) @@ -1940,7 +1920,6 @@ func TestLeafNodeExportImportComplexSetup(t *testing.T) { } ` conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) s1, s1Opts := RunServerWithConfig(conf) defer s1.Shutdown() @@ -2025,10 +2004,8 @@ func TestLeafNodeExportImportComplexSetup(t *testing.T) { // Create the leaf node server using the first account. seed, _ := kp1.Seed() mycreds := genCredsFile(t, ujwt1, seed) - defer removeFile(t, mycreds) - sl, lopts, lnconf := runSolicitWithCredentials(t, s1Opts, mycreds) - defer removeFile(t, lnconf) + sl, lopts, _ := runSolicitWithCredentials(t, s1Opts, mycreds) defer sl.Shutdown() checkLeafNodeConnected(t, s1) @@ -2361,8 +2338,7 @@ func TestLeafNodeAdvertise(t *testing.T) { } func TestLeafNodeConnectionLimitsSingleServer(t *testing.T) { - s, opts, conf := runLeafNodeOperatorServer(t) - defer removeFile(t, conf) + s, opts, _ := runLeafNodeOperatorServer(t) defer s.Shutdown() // Setup account and a user that will be used by the remote leaf node server. @@ -2392,7 +2368,6 @@ func TestLeafNodeConnectionLimitsSingleServer(t *testing.T) { } seed, _ := kp.Seed() mycreds := genCredsFile(t, ujwt, seed) - defer removeFile(t, mycreds) checkAccConnectionCounts := func(t *testing.T, expected int) { t.Helper() @@ -2419,8 +2394,7 @@ func TestLeafNodeConnectionLimitsSingleServer(t *testing.T) { }) } - sl, _, lnconf := runSolicitWithCredentials(t, opts, mycreds) - defer removeFile(t, lnconf) + sl, _, _ := runSolicitWithCredentials(t, opts, mycreds) defer sl.Shutdown() checkLeafNodeConnections(t, s, 1) @@ -2432,8 +2406,7 @@ func TestLeafNodeConnectionLimitsSingleServer(t *testing.T) { t.Fatalf("Expected 1 for total connections, got %d", nc) } - s2, _, lnconf2 := runSolicitWithCredentials(t, opts, mycreds) - defer removeFile(t, lnconf2) + s2, _, _ := runSolicitWithCredentials(t, opts, mycreds) defer s2.Shutdown() checkLeafNodeConnections(t, s, 2) checkAccConnectionCounts(t, 2) @@ -2450,16 +2423,14 @@ func TestLeafNodeConnectionLimitsSingleServer(t *testing.T) { } // Now add back the second one as #3. - s3, _, lnconf3 := runSolicitWithCredentials(t, opts, mycreds) - defer removeFile(t, lnconf3) + s3, _, _ := runSolicitWithCredentials(t, opts, mycreds) defer s3.Shutdown() checkLeafNodeConnections(t, s, 2) checkAccConnectionCounts(t, 2) // Once we are here we should not be able to create anymore. Limit == 2. - s4, _, lnconf4 := runSolicitWithCredentials(t, opts, mycreds) - defer removeFile(t, lnconf4) + s4, _, _ := runSolicitWithCredentials(t, opts, mycreds) defer s4.Shutdown() checkAccConnectionCounts(t, 2) @@ -2496,7 +2467,6 @@ func TestLeafNodeConnectionLimitsCluster(t *testing.T) { } ` conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) s1, s1Opts := RunServerWithConfig(conf) defer s1.Shutdown() @@ -2563,18 +2533,15 @@ func TestLeafNodeConnectionLimitsCluster(t *testing.T) { } seed, _ := kp.Seed() mycreds := genCredsFile(t, ujwt, seed) - defer removeFile(t, mycreds) loop := maxleafs / 2 // Now create maxleafs/2 leaf node servers on each operator server. for i := 0; i < loop; i++ { - sl1, _, lnconf1 := runSolicitWithCredentials(t, s1Opts, mycreds) - defer removeFile(t, lnconf1) + sl1, _, _ := runSolicitWithCredentials(t, s1Opts, mycreds) defer sl1.Shutdown() - sl2, _, lnconf2 := runSolicitWithCredentials(t, s2Opts, mycreds) - defer removeFile(t, lnconf2) + sl2, _, _ := runSolicitWithCredentials(t, s2Opts, mycreds) defer sl2.Shutdown() } @@ -2604,16 +2571,14 @@ func TestLeafNodeConnectionLimitsCluster(t *testing.T) { checkAccLFCount(acc2, true, loop) // Now that we are here we should not be allowed anymore leaf nodes. - l, _, lnconf := runSolicitWithCredentials(t, s1Opts, mycreds) - defer removeFile(t, lnconf) + l, _, _ := runSolicitWithCredentials(t, s1Opts, mycreds) defer l.Shutdown() checkAccLFCount(acc, false, maxleafs) // Should still be at loop size. checkLeafNodeConnections(t, s1, loop) - l, _, lnconf = runSolicitWithCredentials(t, s2Opts, mycreds) - defer removeFile(t, lnconf) + l, _, _ = runSolicitWithCredentials(t, s2Opts, mycreds) defer l.Shutdown() checkAccLFCount(acc2, false, maxleafs) // Should still be at loop size. @@ -2856,8 +2821,7 @@ func TestLeafNodeServiceImportResponderOnLeaf(t *testing.T) { } func TestLeafNodeSendsAccountingEvents(t *testing.T) { - s, opts, conf := runLeafNodeOperatorServer(t) - defer removeFile(t, conf) + s, opts, _ := runLeafNodeOperatorServer(t) defer s.Shutdown() // System account @@ -2892,10 +2856,8 @@ func TestLeafNodeSendsAccountingEvents(t *testing.T) { } seed, _ := kp.Seed() mycreds := genCredsFile(t, ujwt, seed) - defer removeFile(t, mycreds) - sl, _, lnconf := runSolicitWithCredentials(t, opts, mycreds) - defer removeFile(t, lnconf) + sl, _, _ := runSolicitWithCredentials(t, opts, mycreds) defer sl.Shutdown() // Wait for connect event @@ -3113,7 +3075,6 @@ func TestLeafNodeDefaultPort(t *testing.T) { ] } `)) - defer removeFile(t, conf) sl, _ := RunServerWithConfig(conf) defer sl.Shutdown() @@ -3257,7 +3218,6 @@ func TestLeafNodeMultipleRemoteURLs(t *testing.T) { config := fmt.Sprintf(content, opts.LeafNode.Port, opts.LeafNode.Port) conf := createConfFile(t, []byte(config)) sl, _ := RunServerWithConfig(conf) - defer removeFile(t, conf) defer sl.Shutdown() checkLeafNodeConnected(t, s) @@ -3705,7 +3665,6 @@ func TestServiceExportWithMultipleAccounts(t *testing.T) { listen: "127.0.0.1:-1" } `)) - defer removeFile(t, confA) srvA, optsA := RunServerWithConfig(confA) defer srvA.Shutdown() @@ -3746,7 +3705,6 @@ func TestServiceExportWithMultipleAccounts(t *testing.T) { ` confB := createConfFile(t, []byte(fmt.Sprintf(bConfigTemplate, optsA.LeafNode.Port))) - defer removeFile(t, confB) srvB, optsB := RunServerWithConfig(confB) defer srvB.Shutdown() @@ -3826,7 +3784,6 @@ func TestServiceExportWithLeafnodeRestart(t *testing.T) { } } `)) - defer removeFile(t, confG) srvG, optsG := RunServerWithConfig(confG) defer srvG.Shutdown() @@ -3877,7 +3834,6 @@ func TestServiceExportWithLeafnodeRestart(t *testing.T) { ` confE := createConfFile(t, []byte(fmt.Sprintf(eConfigTemplate, optsG.LeafNode.Port))) - defer removeFile(t, confE) srvE, optsE := RunServerWithConfig(confE) defer srvE.Shutdown() @@ -4006,7 +3962,6 @@ func TestLeafNodeOriginClusterSingleHub(t *testing.T) { leafnodes { remotes = [{ url: nats-leaf://127.0.0.1:%d }] } ` lconf1 := createConfFile(t, []byte(fmt.Sprintf(c1, opts.LeafNode.Port))) - defer removeFile(t, lconf1) ln1, lopts1 := RunServerWithConfig(lconf1) defer ln1.Shutdown() @@ -4017,7 +3972,6 @@ func TestLeafNodeOriginClusterSingleHub(t *testing.T) { leafnodes { remotes = [{ url: nats-leaf://127.0.0.1:%d }] } ` lconf2 := createConfFile(t, []byte(fmt.Sprintf(c2, lopts1.Cluster.Port, opts.LeafNode.Port))) - defer removeFile(t, lconf2) ln2, _ := RunServerWithConfig(lconf2) defer ln2.Shutdown() @@ -4096,7 +4050,6 @@ func TestLeafNodeOriginCluster(t *testing.T) { leafnodes { remotes = [{ url: nats-leaf://127.0.0.1:%d }] } ` lconf1 := createConfFile(t, []byte(fmt.Sprintf(c1, ca.opts[0].LeafNode.Port))) - defer removeFile(t, lconf1) ln1, lopts1 := RunServerWithConfig(lconf1) defer ln1.Shutdown() @@ -4108,7 +4061,6 @@ func TestLeafNodeOriginCluster(t *testing.T) { leafnodes { remotes = [{ url: nats-leaf://127.0.0.1:%d }] } ` lconf2 := createConfFile(t, []byte(fmt.Sprintf(c2, lopts1.Cluster.Port, ca.opts[1].LeafNode.Port))) - defer removeFile(t, lconf2) ln2, _ := RunServerWithConfig(lconf2) defer ln2.Shutdown() @@ -4120,7 +4072,6 @@ func TestLeafNodeOriginCluster(t *testing.T) { leafnodes { remotes = [{ url: nats-leaf://127.0.0.1:%d }] } ` lconf3 := createConfFile(t, []byte(fmt.Sprintf(c3, lopts1.Cluster.Port, ca.opts[2].LeafNode.Port))) - defer removeFile(t, lconf3) ln3, _ := RunServerWithConfig(lconf3) defer ln3.Shutdown() @@ -4325,7 +4276,6 @@ func TestLeafNodeAndGatewaysStreamAndShadowSubs(t *testing.T) { } } `)) - defer removeFile(t, conf1) s1, o1 := RunServerWithConfig(conf1) defer s1.Shutdown() @@ -4354,7 +4304,6 @@ func TestLeafNodeAndGatewaysStreamAndShadowSubs(t *testing.T) { ] } `, o1.Gateway.Port))) - defer removeFile(t, conf2) s2, o2 := RunServerWithConfig(conf2) defer s2.Shutdown() @@ -4395,7 +4344,6 @@ func TestLeafNodeAndGatewaysStreamAndShadowSubs(t *testing.T) { ] } `, o1.LeafNode.Port))) - defer removeFile(t, conf3) s3, o3 := RunServerWithConfig(conf3) defer s3.Shutdown() diff --git a/test/new_routes_test.go b/test/new_routes_test.go index 338f60a6..174c6d9a 100644 --- a/test/new_routes_test.go +++ b/test/new_routes_test.go @@ -1676,7 +1676,6 @@ func TestNewRouteLeafNodeOriginSupport(t *testing.T) { no_sys_acc: true ` conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -1690,7 +1689,6 @@ func TestNewRouteLeafNodeOriginSupport(t *testing.T) { no_sys_acc: true ` lconf := createConfFile(t, []byte(fmt.Sprintf(lcontent, opts.LeafNode.Port))) - defer removeFile(t, lconf) ln, _ := RunServerWithConfig(lconf) defer ln.Shutdown() diff --git a/test/norace_test.go b/test/norace_test.go index 5e677911..2cdf8b53 100644 --- a/test/norace_test.go +++ b/test/norace_test.go @@ -51,7 +51,6 @@ func TestNoRaceRouteSendSubs(t *testing.T) { no_sys_acc: true ` cfa := createConfFile(t, []byte(fmt.Sprintf(template, ""))) - defer removeFile(t, cfa) srvA, optsA := RunServerWithConfig(cfa) srvA.Shutdown() optsA.DisableShortFirstPing = true diff --git a/test/ocsp_test.go b/test/ocsp_test.go index c08cabc8..7cf30e64 100644 --- a/test/ocsp_test.go +++ b/test/ocsp_test.go @@ -255,7 +255,6 @@ func TestOCSPMustStapleAutoDoesNotShutdown(t *testing.T) { } ` conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -537,7 +536,6 @@ func TestOCSPClient(t *testing.T) { test.configure() content := test.config conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -595,7 +593,6 @@ func TestOCSPReloadRotateTLSCertWithNoURL(t *testing.T) { } ` conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -687,8 +684,7 @@ func TestOCSPReloadRotateTLSCertDisableMustStaple(t *testing.T) { addr := fmt.Sprintf("http://%s", ocspr.Addr) setOCSPStatus(t, addr, serverCert, ocsp.Good) - storeDir := createDir(t, "_ocsp") - defer removeDir(t, storeDir) + storeDir := t.TempDir() originalContent := ` port: -1 @@ -705,7 +701,6 @@ func TestOCSPReloadRotateTLSCertDisableMustStaple(t *testing.T) { content := fmt.Sprintf(originalContent, storeDir) conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -899,7 +894,6 @@ func TestOCSPReloadRotateTLSCertEnableMustStaple(t *testing.T) { } ` conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -995,12 +989,9 @@ func TestOCSPCluster(t *testing.T) { setOCSPStatus(t, addr, "configs/certs/ocsp/server-status-request-url-08-cert.pem", ocsp.Good) // Store Dirs - storeDirA := createDir(t, "_ocspA") - defer removeDir(t, storeDirA) - storeDirB := createDir(t, "_ocspB") - defer removeDir(t, storeDirB) - storeDirC := createDir(t, "_ocspC") - defer removeDir(t, storeDirC) + storeDirA := t.TempDir() + storeDirB := t.TempDir() + storeDirC := t.TempDir() // Seed server configuration srvConfA := ` @@ -1032,7 +1023,6 @@ func TestOCSPCluster(t *testing.T) { ` srvConfA = fmt.Sprintf(srvConfA, storeDirA) sconfA := createConfFile(t, []byte(srvConfA)) - defer removeFile(t, sconfA) srvA, optsA := RunServerWithConfig(sconfA) defer srvA.Shutdown() @@ -1069,7 +1059,6 @@ func TestOCSPCluster(t *testing.T) { ` srvConfB = fmt.Sprintf(srvConfB, storeDirB, optsA.Cluster.Port) conf := createConfFile(t, []byte(srvConfB)) - defer removeFile(t, conf) srvB, optsB := RunServerWithConfig(conf) defer srvB.Shutdown() @@ -1136,7 +1125,6 @@ func TestOCSPCluster(t *testing.T) { ` srvConfC = fmt.Sprintf(srvConfC, storeDirC, optsA.Cluster.Port) conf = createConfFile(t, []byte(srvConfC)) - defer removeFile(t, conf) srvC, optsC := RunServerWithConfig(conf) defer srvC.Shutdown() @@ -1269,12 +1257,9 @@ func TestOCSPLeaf(t *testing.T) { setOCSPStatus(t, addr, "configs/certs/ocsp/server-status-request-url-08-cert.pem", ocsp.Good) // Store Dirs - storeDirA := createDir(t, "_ocspA") - defer removeDir(t, storeDirA) - storeDirB := createDir(t, "_ocspB") - defer removeDir(t, storeDirB) - storeDirC := createDir(t, "_ocspC") - defer removeDir(t, storeDirC) + storeDirA := t.TempDir() + storeDirB := t.TempDir() + storeDirC := t.TempDir() // LeafNode server configuration srvConfA := ` @@ -1305,7 +1290,6 @@ func TestOCSPLeaf(t *testing.T) { ` srvConfA = fmt.Sprintf(srvConfA, storeDirA) sconfA := createConfFile(t, []byte(srvConfA)) - defer removeFile(t, sconfA) srvA, optsA := RunServerWithConfig(sconfA) defer srvA.Shutdown() @@ -1337,7 +1321,6 @@ func TestOCSPLeaf(t *testing.T) { ` srvConfB = fmt.Sprintf(srvConfB, storeDirB, optsA.LeafNode.Port) conf := createConfFile(t, []byte(srvConfB)) - defer removeFile(t, conf) srvB, optsB := RunServerWithConfig(conf) defer srvB.Shutdown() @@ -1398,7 +1381,6 @@ func TestOCSPLeaf(t *testing.T) { ` srvConfC = fmt.Sprintf(srvConfC, storeDirC, optsA.LeafNode.Port) conf = createConfFile(t, []byte(srvConfC)) - defer removeFile(t, conf) srvC, optsC := RunServerWithConfig(conf) defer srvC.Shutdown() @@ -1540,12 +1522,9 @@ func TestOCSPGateway(t *testing.T) { setOCSPStatus(t, addr, "configs/certs/ocsp/server-status-request-url-08-cert.pem", ocsp.Good) // Store Dirs - storeDirA := createDir(t, "_ocspA") - defer removeDir(t, storeDirA) - storeDirB := createDir(t, "_ocspB") - defer removeDir(t, storeDirB) - storeDirC := createDir(t, "_ocspC") - defer removeDir(t, storeDirC) + storeDirA := t.TempDir() + storeDirB := t.TempDir() + storeDirC := t.TempDir() // Gateway server configuration srvConfA := ` @@ -1577,7 +1556,6 @@ func TestOCSPGateway(t *testing.T) { ` srvConfA = fmt.Sprintf(srvConfA, storeDirA) sconfA := createConfFile(t, []byte(srvConfA)) - defer removeFile(t, sconfA) srvA, optsA := RunServerWithConfig(sconfA) defer srvA.Shutdown() @@ -1620,7 +1598,6 @@ func TestOCSPGateway(t *testing.T) { ` srvConfB = fmt.Sprintf(srvConfB, storeDirB, optsA.Gateway.Port) conf := createConfFile(t, []byte(srvConfB)) - defer removeFile(t, conf) srvB, optsB := RunServerWithConfig(conf) defer srvB.Shutdown() @@ -1684,7 +1661,6 @@ func TestOCSPGateway(t *testing.T) { ` srvConfC = fmt.Sprintf(srvConfC, storeDirC, optsA.Gateway.Port) conf = createConfFile(t, []byte(srvConfC)) - defer removeFile(t, conf) srvC, optsC := RunServerWithConfig(conf) defer srvC.Shutdown() @@ -1846,7 +1822,6 @@ func TestOCSPGatewayIntermediate(t *testing.T) { ` srvConfA = fmt.Sprintf(srvConfA, addr) sconfA := createConfFile(t, []byte(srvConfA)) - defer removeFile(t, sconfA) srvA, optsA := RunServerWithConfig(sconfA) defer srvA.Shutdown() @@ -1880,7 +1855,6 @@ func TestOCSPGatewayIntermediate(t *testing.T) { ` srvConfB = fmt.Sprintf(srvConfB, addr, optsA.Gateway.Port) conf := createConfFile(t, []byte(srvConfB)) - defer removeFile(t, conf) srvB, optsB := RunServerWithConfig(conf) defer srvB.Shutdown() @@ -2138,7 +2112,6 @@ func TestOCSPCustomConfig(t *testing.T) { test.configure() content := test.config conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -2200,7 +2173,6 @@ func TestOCSPCustomConfigReloadDisable(t *testing.T) { } ` conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -2303,7 +2275,6 @@ func TestOCSPCustomConfigReloadEnable(t *testing.T) { } ` conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -2606,14 +2577,10 @@ func TestOCSPSuperCluster(t *testing.T) { setOCSPStatus(t, addr, "configs/certs/ocsp/server-cert.pem", ocsp.Good) // Store Dirs - storeDirA := createDir(t, "_ocspA") - defer removeDir(t, storeDirA) - storeDirB := createDir(t, "_ocspB") - defer removeDir(t, storeDirB) - storeDirC := createDir(t, "_ocspC") - defer removeDir(t, storeDirC) - storeDirD := createDir(t, "_ocspD") - defer removeDir(t, storeDirD) + storeDirA := t.TempDir() + storeDirB := t.TempDir() + storeDirC := t.TempDir() + storeDirD := t.TempDir() // Gateway server configuration srvConfA := ` @@ -2663,7 +2630,6 @@ func TestOCSPSuperCluster(t *testing.T) { ` srvConfA = fmt.Sprintf(srvConfA, storeDirA) sconfA := createConfFile(t, []byte(srvConfA)) - defer removeFile(t, sconfA) srvA, optsA := RunServerWithConfig(sconfA) defer srvA.Shutdown() @@ -2717,7 +2683,6 @@ func TestOCSPSuperCluster(t *testing.T) { ` srvConfB = fmt.Sprintf(srvConfB, storeDirB, optsA.Cluster.Port) conf := createConfFile(t, []byte(srvConfB)) - defer removeFile(t, conf) srvB, optsB := RunServerWithConfig(conf) defer srvB.Shutdown() @@ -2782,7 +2747,6 @@ func TestOCSPSuperCluster(t *testing.T) { ` srvConfC = fmt.Sprintf(srvConfC, storeDirC, optsA.Gateway.Port) conf = createConfFile(t, []byte(srvConfC)) - defer removeFile(t, conf) srvC, optsC := RunServerWithConfig(conf) defer srvC.Shutdown() @@ -2845,7 +2809,6 @@ func TestOCSPSuperCluster(t *testing.T) { ` srvConfD = fmt.Sprintf(srvConfD, addr, storeDirD, optsA.Gateway.Port, optsC.Gateway.Port) conf = createConfFile(t, []byte(srvConfD)) - defer removeFile(t, conf) srvD, _ := RunServerWithConfig(conf) defer srvD.Shutdown() diff --git a/test/operator_test.go b/test/operator_test.go index 200ec245..5fbc4947 100644 --- a/test/operator_test.go +++ b/test/operator_test.go @@ -357,7 +357,6 @@ func TestReloadDoesNotWipeAccountsWithOperatorMode(t *testing.T) { ` contents := strings.Replace(fmt.Sprintf(cf, "", sysPub, sysPub, sysJWT, accPub, accJWT), "\n\t", "\n", -1) conf := createConfFile(t, []byte(contents)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -367,7 +366,6 @@ func TestReloadDoesNotWipeAccountsWithOperatorMode(t *testing.T) { contents2 := strings.Replace(fmt.Sprintf(cf, routeStr, sysPub, sysPub, sysJWT, accPub, accJWT), "\n\t", "\n", -1) conf2 := createConfFile(t, []byte(contents2)) - defer removeFile(t, conf2) s2, opts2 := RunServerWithConfig(conf2) defer s2.Shutdown() @@ -481,7 +479,6 @@ func TestReloadDoesUpdateAccountsWithMemoryResolver(t *testing.T) { ` contents := strings.Replace(fmt.Sprintf(cf, "", sysPub, sysPub, sysJWT, accPub, accJWT), "\n\t", "\n", -1) conf := createConfFile(t, []byte(contents)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -573,7 +570,6 @@ func TestReloadFailsWithBadAccountsWithMemoryResolver(t *testing.T) { ` contents := strings.Replace(fmt.Sprintf(cf, "", sysPub, sysPub, sysJWT, apub, ajwt), "\n\t", "\n", -1) conf := createConfFile(t, []byte(contents)) - defer removeFile(t, conf) s, _ := RunServerWithConfig(conf) defer s.Shutdown() @@ -637,7 +633,6 @@ func TestConnsRequestDoesNotLoadAccountCheckingConnLimits(t *testing.T) { ` contents := strings.Replace(fmt.Sprintf(cf, "", sysPub, sysPub, sysJWT, accPub, accJWT), "\n\t", "\n", -1) conf := createConfFile(t, []byte(contents)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -647,7 +642,6 @@ func TestConnsRequestDoesNotLoadAccountCheckingConnLimits(t *testing.T) { contents2 := strings.Replace(fmt.Sprintf(cf, routeStr, sysPub, sysPub, sysJWT, accPub, accJWT), "\n\t", "\n", -1) conf2 := createConfFile(t, []byte(contents2)) - defer removeFile(t, conf2) s2, _ := RunServerWithConfig(conf2) defer s2.Shutdown() diff --git a/test/pid_test.go b/test/pid_test.go index dd714cb3..e46b307c 100644 --- a/test/pid_test.go +++ b/test/pid_test.go @@ -22,10 +22,7 @@ import ( func TestPidFile(t *testing.T) { opts := DefaultTestOptions - tmpDir := createDir(t, "_nats-server") - defer removeDir(t, tmpDir) - - file := createFileAtDir(t, tmpDir, "nats-server:pid_") + file := createTempFile(t, "nats-server:pid_") file.Close() opts.PidFile = file.Name() diff --git a/test/ports_test.go b/test/ports_test.go index f58b159f..68b05bbf 100644 --- a/test/ports_test.go +++ b/test/ports_test.go @@ -45,7 +45,7 @@ func portFile(dirname string) string { } func TestPortsFile(t *testing.T) { - portFileDir := createDir(t, "") + portFileDir := t.TempDir() opts := DefaultTestOptions opts.PortsFileDir = portFileDir @@ -122,9 +122,7 @@ func TestPortsFile(t *testing.T) { // makes a temp directory with two directories 'A' and 'B' // the location of the ports file is changed from dir A to dir B. func TestPortsFileReload(t *testing.T) { - // make a temp dir - tempDir := createDir(t, "") - defer removeDir(t, tempDir) + tempDir := t.TempDir() // make child temp dir A dirA := filepath.Join(tempDir, "A") diff --git a/test/routes_test.go b/test/routes_test.go index e85c20aa..a9e8ccd8 100644 --- a/test/routes_test.go +++ b/test/routes_test.go @@ -1101,11 +1101,10 @@ func TestRouteBasicPermissions(t *testing.T) { func createConfFile(t testing.TB, content []byte) string { t.Helper() - conf := createFile(t, "") + conf := createTempFile(t, "") fName := conf.Name() conf.Close() if err := os.WriteFile(fName, content, 0666); err != nil { - removeFile(t, fName) t.Fatalf("Error writing conf file: %v", err) } return fName @@ -1151,7 +1150,6 @@ func TestRoutesOnlyImportOrExport(t *testing.T) { } } `, c))) - defer removeFile(t, cf) s, _ := RunServerWithConfig(cf) s.Shutdown() } diff --git a/test/service_latency_test.go b/test/service_latency_test.go index 7c7e8715..ca9c35ed 100644 --- a/test/service_latency_test.go +++ b/test/service_latency_test.go @@ -745,7 +745,6 @@ func TestServiceLatencyWithJWT(t *testing.T) { ` contents := strings.Replace(fmt.Sprintf(cf, "", sysPub, sysPub, sysJWT, svcPub, svcJWT, accPub, accJWT), "\n\t", "\n", -1) conf := createConfFile(t, []byte(contents)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -755,7 +754,6 @@ func TestServiceLatencyWithJWT(t *testing.T) { contents2 := strings.Replace(fmt.Sprintf(cf, routeStr, sysPub, sysPub, sysJWT, svcPub, svcJWT, accPub, accJWT), "\n\t", "\n", -1) conf2 := createConfFile(t, []byte(contents2)) - defer removeFile(t, conf2) s2, opts2 := RunServerWithConfig(conf2) defer s2.Shutdown() @@ -1179,7 +1177,6 @@ func TestServiceLatencyOldRequestStyleSingleServer(t *testing.T) { system_account: SYS `)) - defer removeFile(t, conf) srv, opts := RunServerWithConfig(conf) defer srv.Shutdown() @@ -1245,7 +1242,6 @@ func TestServiceAndStreamStackOverflow(t *testing.T) { } } `)) - defer removeFile(t, conf) srv, opts := RunServerWithConfig(conf) defer srv.Shutdown() @@ -1424,7 +1420,6 @@ func TestServiceLatencyRequestorSharesConfig(t *testing.T) { system_account: SYS `)) - defer removeFile(t, conf) srv, opts := RunServerWithConfig(conf) defer srv.Shutdown() @@ -1535,7 +1530,6 @@ func TestServiceLatencyLossTest(t *testing.T) { } system_account: SYS `)) - defer removeFile(t, conf) srv, opts := RunServerWithConfig(conf) defer srv.Shutdown() @@ -1722,7 +1716,6 @@ func TestServiceLatencyHeaderTriggered(t *testing.T) { system_account: SYS `, v.shared))) - defer removeFile(t, conf) srv, opts := RunServerWithConfig(conf) defer srv.Shutdown() @@ -1808,7 +1801,6 @@ func TestServiceLatencyMissingResults(t *testing.T) { } } `)) - defer removeFile(t, accConf) s1Conf := createConfFile(t, []byte(fmt.Sprintf(` listen: 127.0.0.1:-1 @@ -1816,7 +1808,9 @@ func TestServiceLatencyMissingResults(t *testing.T) { cluster { port: -1 } include %q `, filepath.Base(accConf)))) - defer removeFile(t, s1Conf) + + // Link accConf for relative import from s1Conf + os.Link(accConf, filepath.Join(filepath.Dir(s1Conf), filepath.Base(accConf))) s1, opts1 := RunServerWithConfig(s1Conf) defer s1.Shutdown() @@ -1830,7 +1824,9 @@ func TestServiceLatencyMissingResults(t *testing.T) { } include %q `, opts1.Cluster.Port, filepath.Base(accConf)))) - defer removeFile(t, s2Conf) + + // Link accConf for relative import from s2Conf + os.Link(accConf, filepath.Join(filepath.Dir(s2Conf), filepath.Base(accConf))) s2, opts2 := RunServerWithConfig(s2Conf) defer s2.Shutdown() diff --git a/test/services_test.go b/test/services_test.go index 7757dc26..088ec25c 100644 --- a/test/services_test.go +++ b/test/services_test.go @@ -42,7 +42,6 @@ var basicMASetupContents = []byte(` func TestServiceImportWithStreamed(t *testing.T) { conf := createConfFile(t, basicMASetupContents) - defer removeFile(t, conf) srv, opts := RunServerWithConfig(conf) defer srv.Shutdown() @@ -140,7 +139,6 @@ func TestServiceImportWithStreamed(t *testing.T) { func TestServiceImportWithStreamedResponseAndEOF(t *testing.T) { conf := createConfFile(t, basicMASetupContents) - defer removeFile(t, conf) srv, opts := RunServerWithConfig(conf) defer srv.Shutdown() @@ -224,7 +222,6 @@ func TestServiceExportsResponseFiltering(t *testing.T) { } } `)) - defer removeFile(t, conf) srv, opts := RunServerWithConfig(conf) defer srv.Shutdown() @@ -292,7 +289,6 @@ func TestServiceExportsAutoDirectCleanup(t *testing.T) { } } `)) - defer removeFile(t, conf) srv, opts := RunServerWithConfig(conf) defer srv.Shutdown() @@ -390,7 +386,6 @@ func TestServiceExportsPruningCleanup(t *testing.T) { } } `)) - defer removeFile(t, conf) srv, opts := RunServerWithConfig(conf) defer srv.Shutdown() @@ -479,7 +474,6 @@ func TestServiceExportsResponseThreshold(t *testing.T) { }, } `)) - defer removeFile(t, conf) srv, opts := RunServerWithConfig(conf) defer srv.Shutdown() @@ -525,7 +519,6 @@ func TestServiceExportsResponseThresholdChunked(t *testing.T) { } } `)) - defer removeFile(t, conf) srv, opts := RunServerWithConfig(conf) defer srv.Shutdown() @@ -588,7 +581,6 @@ func TestServiceAllowResponsesPerms(t *testing.T) { } } `)) - defer removeFile(t, conf) srv, opts := RunServerWithConfig(conf) defer srv.Shutdown() diff --git a/test/test.go b/test/test.go index 8fe94b6a..e36c7c77 100644 --- a/test/test.go +++ b/test/test.go @@ -21,7 +21,6 @@ import ( "io" "net" "os" - "path/filepath" "regexp" "runtime" "strconv" @@ -32,8 +31,6 @@ import ( "github.com/nats-io/nats-server/v2/server" ) -var tempRoot = filepath.Join(os.TempDir(), "nats-server") - // So we can pass tests and benchmarks.. type tLogger interface { Fatalf(format string, args ...interface{}) @@ -638,45 +635,11 @@ func nextServerOpts(opts *server.Options) *server.Options { return nopts } -func createDir(t testing.TB, prefix string) string { +func createTempFile(t testing.TB, prefix string) *os.File { t.Helper() - if err := os.MkdirAll(tempRoot, 0700); err != nil { - t.Fatal(err) - } - dir, err := os.MkdirTemp(tempRoot, prefix) + file, err := os.CreateTemp(t.TempDir(), prefix) if err != nil { t.Fatal(err) } - return dir -} - -func createFile(t testing.TB, prefix string) *os.File { - t.Helper() - if err := os.MkdirAll(tempRoot, 0700); err != nil { - t.Fatal(err) - } - return createFileAtDir(t, tempRoot, prefix) -} - -func createFileAtDir(t testing.TB, dir, prefix string) *os.File { - t.Helper() - f, err := os.CreateTemp(dir, prefix) - if err != nil { - t.Fatal(err) - } - return f -} - -func removeDir(t testing.TB, dir string) { - t.Helper() - if err := os.RemoveAll(dir); err != nil { - t.Fatal(err) - } -} - -func removeFile(t testing.TB, p string) { - t.Helper() - if err := os.Remove(p); err != nil { - t.Fatal(err) - } + return file } diff --git a/test/tls_test.go b/test/tls_test.go index 26106cc0..19fb800e 100644 --- a/test/tls_test.go +++ b/test/tls_test.go @@ -152,7 +152,6 @@ func TestTLSClientCertificateCheckWithAllowedConnectionTypes(t *testing.T) { ] } `)) - defer removeFile(t, conf) s, o := RunServerWithConfig(conf) defer s.Shutdown() @@ -1181,7 +1180,6 @@ func TestTLSHandshakeFailureMemUsage(t *testing.T) { } `) conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -1519,7 +1517,6 @@ func TestTLSClientAuthWithRDNSequence(t *testing.T) { } `) conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -1639,7 +1636,6 @@ func TestTLSClientAuthWithRDNSequenceReordered(t *testing.T) { } `) conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -1772,7 +1768,6 @@ func TestTLSClientSVIDAuth(t *testing.T) { } `) conf := createConfFile(t, []byte(content)) - defer removeFile(t, conf) s, opts := RunServerWithConfig(conf) defer s.Shutdown() @@ -1823,7 +1818,6 @@ func TestTLSPinnedCertsClient(t *testing.T) { }` confFileName := createConfFile(t, []byte(fmt.Sprintf(tmpl, "aaaaaaaa09fde09451411ba3b42c0f74727d61a974c69fd3cf5257f39c75f0e9"))) - defer removeFile(t, confFileName) srv, o := RunServerWithConfig(confFileName) defer srv.Shutdown() @@ -1893,7 +1887,6 @@ func TestTLSConnectionRate(t *testing.T) { ` confFileName := createConfFile(t, []byte(config)) - defer removeFile(t, confFileName) srv, _ := RunServerWithConfig(confFileName) logger := newCaptureWarnLogger() @@ -1953,12 +1946,10 @@ func TestTLSPinnedCertsRoute(t *testing.T) { }` confSeed := createConfFile(t, []byte(tmplSeed)) - defer removeFile(t, confSeed) srvSeed, o := RunServerWithConfig(confSeed) defer srvSeed.Shutdown() confSrv := createConfFile(t, []byte(fmt.Sprintf(tmplSrv, o.Cluster.Port, "89386860ea1222698ea676fc97310bdf2bff6f7e2b0420fac3b3f8f5a08fede5"))) - defer removeFile(t, confSrv) srv, _ := RunServerWithConfig(confSrv) defer srv.Shutdown() @@ -1986,7 +1977,6 @@ func TestAllowNonTLSReload(t *testing.T) { allow_non_tls: true ` conf := createConfFile(t, []byte(fmt.Sprintf(tmpl, "10s"))) - defer removeFile(t, conf) s, o := RunServerWithConfig(conf) defer s.Shutdown()