@@ -47,12 +47,6 @@ type StartOpts struct {
47
47
// a Tarantool instance.
48
48
ClientSsl tarantool.SslOpts
49
49
50
- // WorkDir is box.cfg work_dir parameter for tarantool.
51
- // Specify folder to store tarantool data files.
52
- // Folder must be unique for each tarantool process used simultaneously.
53
- // https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-work_dir
54
- WorkDir string
55
-
56
50
// SslCertsDir is a path to a directory with SSL certificates. It will be
57
51
// copied to the working directory.
58
52
SslCertsDir string
@@ -84,6 +78,10 @@ type TarantoolInstance struct {
84
78
// Cmd is a Tarantool command. Used to kill Tarantool process.
85
79
Cmd * exec.Cmd
86
80
81
+ // WorkDir is box.cfg work_dir parameter for Tarantool.
82
+ // https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-work_dir
83
+ WorkDir string
84
+
87
85
// Options for restarting a tarantool instance.
88
86
Opts StartOpts
89
87
}
@@ -189,30 +187,28 @@ func RestartTarantool(inst *TarantoolInstance) error {
189
187
func StartTarantool (startOpts StartOpts ) (TarantoolInstance , error ) {
190
188
// Prepare tarantool command.
191
189
var inst TarantoolInstance
190
+
191
+ // Create work_dir for a new instance.
192
+ // TO DO: replace with `os.MkdirTemp` when we drop support of
193
+ // Go 1.16 an older
194
+ dir , err := ioutil .TempDir ("" , "work_dir" )
195
+ if err != nil {
196
+ return inst , err
197
+ }
198
+ inst .WorkDir = dir
199
+
192
200
inst .Cmd = exec .Command ("tarantool" , startOpts .InitScript )
193
201
194
202
inst .Cmd .Env = append (
195
203
os .Environ (),
196
- fmt .Sprintf ("TEST_TNT_WORK_DIR=%s" , startOpts .WorkDir ),
204
+ fmt .Sprintf ("TEST_TNT_WORK_DIR=%s" , inst .WorkDir ),
197
205
fmt .Sprintf ("TEST_TNT_LISTEN=%s" , startOpts .Listen ),
198
206
fmt .Sprintf ("TEST_TNT_MEMTX_USE_MVCC_ENGINE=%t" , startOpts .MemtxUseMvccEngine ),
199
207
)
200
208
201
- // Clean up existing work_dir.
202
- err := os .RemoveAll (startOpts .WorkDir )
203
- if err != nil {
204
- return inst , err
205
- }
206
-
207
- // Create work_dir.
208
- err = os .Mkdir (startOpts .WorkDir , 0755 )
209
- if err != nil {
210
- return inst , err
211
- }
212
-
213
209
// Copy SSL certificates.
214
210
if startOpts .SslCertsDir != "" {
215
- err = copySslCerts (startOpts .WorkDir , startOpts .SslCertsDir )
211
+ err = copySslCerts (inst .WorkDir , startOpts .SslCertsDir )
216
212
if err != nil {
217
213
return inst , err
218
214
}
@@ -289,8 +285,8 @@ func StopTarantool(inst TarantoolInstance) {
289
285
func StopTarantoolWithCleanup (inst TarantoolInstance ) {
290
286
StopTarantool (inst )
291
287
292
- if inst .Opts . WorkDir != "" {
293
- if err := os .RemoveAll (inst .Opts . WorkDir ); err != nil {
288
+ if inst .WorkDir != "" {
289
+ if err := os .RemoveAll (inst .WorkDir ); err != nil {
294
290
log .Fatalf ("Failed to clean work directory, got %s" , err )
295
291
}
296
292
}
0 commit comments