diff --git a/cmd/runmqserver/main.go b/cmd/runmqserver/main.go index 98f0663..13ea28c 100644 --- a/cmd/runmqserver/main.go +++ b/cmd/runmqserver/main.go @@ -227,14 +227,6 @@ func doMain() error { } } - if standby, _ := ready.IsRunningAsStandbyQM(name); !standby { - err = configureQueueManager() - if err != nil { - logTermination(err) - return err - } - } - enableMetrics := os.Getenv("MQ_ENABLE_METRICS") if enableMetrics == "true" || enableMetrics == "1" { go metrics.GatherMetrics(name, log) diff --git a/cmd/runmqserver/qmgr.go b/cmd/runmqserver/qmgr.go index 016a4d4..e932e55 100644 --- a/cmd/runmqserver/qmgr.go +++ b/cmd/runmqserver/qmgr.go @@ -16,11 +16,9 @@ limitations under the License. package main import ( - "bytes" "fmt" "io/ioutil" "os" - "os/exec" "path/filepath" "regexp" "strconv" @@ -125,61 +123,6 @@ func startQueueManager(name string) error { return nil } -func configureQueueManager() error { - const configDir string = "/etc/mqm" - files, err := ioutil.ReadDir(configDir) - if err != nil { - log.Println(err) - return err - } - for _, file := range files { - if strings.HasSuffix(file.Name(), ".mqsc") { - abs := filepath.Join(configDir, file.Name()) - // #nosec G204 - verify := exec.Command("runmqsc", "-v", "-e") - // #nosec G204 - command is fixed, no injection vector - cmd := exec.Command("runmqsc") - // Read mqsc file into variable - // #nosec G304 - filename variable is derived from contents of 'configDir' which is a defined constant - mqsc, err := ioutil.ReadFile(abs) - if err != nil { - log.Printf("Error reading file %v: %v", abs, err) - continue - } - // Write mqsc to buffer - var buffer bytes.Buffer - _, err = buffer.Write(mqsc) - if err != nil { - log.Printf("Error writing MQSC file %v to buffer: %v", abs, err) - continue - } - verifyBuffer := buffer - - // Buffer mqsc to stdin of runmqsc - cmd.Stdin = &buffer - verify.Stdin = &verifyBuffer - - // Verify the MQSC commands - out, err := verify.CombinedOutput() - if err != nil { - log.Errorf("Error verifying MQSC file %v (%v):\n\t%v", file.Name(), err, formatMQSCOutput(string(out))) - return fmt.Errorf("Error verifying MQSC file %v (%v):\n\t%v", file.Name(), err, formatMQSCOutput(string(out))) - } - - // Run runmqsc command - out, err = cmd.CombinedOutput() - if err != nil { - log.Errorf("Error running MQSC file %v (%v):\n\t%v", file.Name(), err, formatMQSCOutput(string(out))) - continue - } else { - // Print the runmqsc output, adding tab characters to make it more readable as part of the log - log.Printf("Output for \"runmqsc\" with %v:\n\t%v", abs, formatMQSCOutput(string(out))) - } - } - } - return nil -} - func stopQueueManager(name string) error { log.Println("Stopping queue manager") qmGracePeriod := os.Getenv("MQ_GRACE_PERIOD") @@ -260,7 +203,7 @@ func getQueueManagerDataDir(mounts map[string]string, name string) string { } func getCreateQueueManagerArgs(mounts map[string]string, name string, devMode bool) []string { - args := []string{"-ii", "/etc/mqm/", "-q", "-p", "1414"} + args := []string{"-ii", "/etc/mqm/", "-ic", "/etc/mqm/", "-q", "-p", "1414"} if devMode { args = append(args, "-oa", "user") } diff --git a/test/docker/docker_api_test.go b/test/docker/docker_api_test.go index 807a9dc..bd41c33 100644 --- a/test/docker/docker_api_test.go +++ b/test/docker/docker_api_test.go @@ -584,7 +584,16 @@ func TestMQSC(t *testing.T) { id := runContainer(t, cli, &containerConfig) defer cleanContainer(t, cli, id) waitForReady(t, cli, id) - rc, mqscOutput := execContainer(t, cli, id, "", []string{"bash", "-c", "echo 'DISPLAY QLOCAL(test)' | runmqsc"}) + + rc := -1 + mqscOutput := "" + for i := 0; i < 60; i++ { + rc, mqscOutput = execContainer(t, cli, id, "", []string{"bash", "-c", "echo 'DISPLAY QLOCAL(test)' | runmqsc"}) + if rc == 0 { + return + } + time.Sleep(1 * time.Second) + } if rc != 0 { r := regexp.MustCompile("AMQ[0-9][0-9][0-9][0-9]E") t.Fatalf("Expected runmqsc to exit with rc=0, got %v with error %v", rc, r.FindString(mqscOutput)) @@ -628,7 +637,15 @@ func TestLargeMQSC(t *testing.T) { defer cleanContainer(t, cli, id) waitForReady(t, cli, id) - rc, mqscOutput := execContainer(t, cli, id, "", []string{"bash", "-c", "echo 'DISPLAY QLOCAL(test" + strconv.Itoa(numQueues) + ")' | runmqsc"}) + rc := -1 + mqscOutput := "" + for i := 0; i < 60; i++ { + rc, mqscOutput = execContainer(t, cli, id, "", []string{"bash", "-c", "echo 'DISPLAY QLOCAL(test" + strconv.Itoa(numQueues) + ")' | runmqsc"}) + if rc == 0 { + return + } + time.Sleep(1 * time.Second) + } if rc != 0 { r := regexp.MustCompile("AMQ[0-9][0-9][0-9][0-9]E") t.Fatalf("Expected runmqsc to exit with rc=0, got %v with error %v", rc, r.FindString(mqscOutput)) @@ -1045,10 +1062,17 @@ func TestReadiness(t *testing.T) { t.Log(mqsc) for { readyRC, _ := execContainer(t, cli, id, "", []string{"chkmqready"}) - queueCheckRC, queueCheckOut := execContainer(t, cli, id, "", []string{"bash", "-c", queueCheckCommand}) - t.Logf("readyRC=%v,queueCheckRC=%v\n", readyRC, queueCheckRC) - if readyRC == 0 { + queueCheckRC := -1 + queueCheckOut := "" + for i := 1; i < 60; i++ { + queueCheckRC, queueCheckOut = execContainer(t, cli, id, "", []string{"bash", "-c", queueCheckCommand}) + t.Logf("readyRC=%v,queueCheckRC=%v\n", readyRC, queueCheckRC) + if queueCheckRC == 0 { + break + } + time.Sleep(1 * time.Second) + } if queueCheckRC != 0 { r := regexp.MustCompile("AMQ[0-9][0-9][0-9][0-9]E") t.Fatalf("Runmqsc returned %v with error %v. chkmqready returned %v when MQSC had not finished", queueCheckRC, r.FindString(queueCheckOut), readyRC)