| 413 | } |
| 414 | |
| 415 | func DeployNode(t *testing.T, node *cluster.Snode, conf *cmn.Config, localConf *cmn.LocalConfig) int { |
| 416 | conf.ConfigDir = t.TempDir() |
| 417 | conf.LogDir = t.TempDir() |
| 418 | conf.TestFSP.Root = t.TempDir() |
| 419 | conf.TestFSP.Instance = 42 |
| 420 | |
| 421 | if localConf == nil { |
| 422 | localConf = &cmn.LocalConfig{} |
| 423 | localConf.ConfigDir = conf.ConfigDir |
| 424 | localConf.HostNet.Port = conf.HostNet.Port |
| 425 | localConf.HostNet.PortIntraControl = conf.HostNet.PortIntraControl |
| 426 | localConf.HostNet.PortIntraData = conf.HostNet.PortIntraData |
| 427 | } |
| 428 | |
| 429 | localConfFile := filepath.Join(conf.ConfigDir, fname.PlaintextInitialConfig) |
| 430 | err := jsp.SaveMeta(localConfFile, localConf, nil) |
| 431 | tassert.CheckFatal(t, err) |
| 432 | |
| 433 | configFile := filepath.Join(conf.ConfigDir, "ais.json") |
| 434 | err = jsp.SaveMeta(configFile, &conf.ClusterConfig, nil) |
| 435 | tassert.CheckFatal(t, err) |
| 436 | |
| 437 | args := []string{ |
| 438 | "-role=" + node.Type(), |
| 439 | "-daemon_id=" + node.ID(), |
| 440 | "-config=" + configFile, |
| 441 | "-local_config=" + localConfFile, |
| 442 | } |
| 443 | |
| 444 | cmd := getAISNodeCmd(t) |
| 445 | pid, err := startNode(cmd, args, false) |
| 446 | tassert.CheckFatal(t, err) |
| 447 | return pid |
| 448 | } |
| 449 | |
| 450 | // CleanupNode kills the process. |
| 451 | func CleanupNode(t *testing.T, pid int) { |