diff --git a/.travis.yml b/.travis.yml index 5bec009..b971631 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -dist: xenial +# Temporarily removing dist tag as not supported by power build +# dist: xenial sudo: required language: go diff --git a/cmd/runmqserver/main.go b/cmd/runmqserver/main.go index a338346..7133ba1 100644 --- a/cmd/runmqserver/main.go +++ b/cmd/runmqserver/main.go @@ -176,11 +176,29 @@ func doMain() error { return err } + enableTraceStrmqm := os.Getenv("MQ_ENABLE_TRACE_STRMQM") + if enableTraceStrmqm == "true" || enableTraceStrmqm == "1" { + err = startMQTrace() + if err != nil { + logTermination(err) + return err + } + } + err = startQueueManager(name) if err != nil { logTermination(err) return err } + + if enableTraceStrmqm == "true" || enableTraceStrmqm == "1" { + err = endMQTrace() + if err != nil { + logTermination(err) + return err + } + } + if standby, _ := ready.IsRunningAsStandbyQM(name); !standby { err = configureQueueManager() if err != nil { diff --git a/cmd/runmqserver/qmgr.go b/cmd/runmqserver/qmgr.go index dabf753..d3faac3 100644 --- a/cmd/runmqserver/qmgr.go +++ b/cmd/runmqserver/qmgr.go @@ -199,6 +199,28 @@ func stopQueueManager(name string) error { return nil } +func startMQTrace() error { + log.Println("Starting MQ trace") + out, rc, err := command.Run("strmqtrc") + if err != nil { + log.Printf("Error %v starting trace: %v", rc, string(out)) + return err + } + log.Println("Started MQ trace") + return nil +} + +func endMQTrace() error { + log.Println("Ending MQ Trace") + out, rc, err := command.Run("endmqtrc") + if err != nil { + log.Printf("Error %v ending trace: %v", rc, string(out)) + return err + } + log.Println("Ended MQ trace") + return nil +} + func formatMQSCOutput(out string) string { // redact sensitive information out, _ = mqscredact.Redact(out) diff --git a/test/docker/docker_api_test.go b/test/docker/docker_api_test.go index b9a075d..4c48dca 100644 --- a/test/docker/docker_api_test.go +++ b/test/docker/docker_api_test.go @@ -1366,3 +1366,27 @@ func TestVersioning(t *testing.T) { } } + +func TestTraceStrmqm(t *testing.T) { + t.Parallel() + + cli, err := client.NewEnvClient() + if err != nil { + t.Fatal(err) + } + + containerConfig := container.Config{ + Env: []string{ + "LICENSE=accept", + "MQ_ENABLE_TRACE_STRMQM=1", + }, + } + id := runContainer(t, cli, &containerConfig) + defer cleanContainer(t, cli, id) + waitForReady(t, cli, id) + + rc, _ := execContainer(t, cli, id, "mqm", []string{"bash", "-c", "ls -A /var/mqm/trace | grep .TRC"}) + if rc != 0 { + t.Fatalf("No trace files found in trace directory /var/mqm/trace. RC=%d.", rc) + } +}