diff options
| author | Paul Buetow <pbuetow@mimecast.com> | 2022-03-14 16:31:19 +0000 |
|---|---|---|
| committer | Paul Buetow <pbuetow@mimecast.com> | 2022-03-14 16:31:19 +0000 |
| commit | e085a61ca70932a3670381e2d6b5919e9108441d (patch) | |
| tree | 02635c4a7b0e24a900d790cb247c7bab14b139b7 /integrationtests/dmap_test.go | |
| parent | bee83cd299b3259790d62b9f22347498f70206b7 (diff) | |
add integration test for "outfile append.."
Diffstat (limited to 'integrationtests/dmap_test.go')
| -rw-r--r-- | integrationtests/dmap_test.go | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/integrationtests/dmap_test.go b/integrationtests/dmap_test.go index 346a872..600aaa9 100644 --- a/integrationtests/dmap_test.go +++ b/integrationtests/dmap_test.go @@ -189,3 +189,59 @@ func TestDMap3(t *testing.T) { os.Remove(csvFile) os.Remove(queryFile) } + +func TestDMap4Append(t *testing.T) { + if !config.Env("DTAIL_INTEGRATION_TEST_RUN_MODE") { + t.Log("Skipping") + return + } + inFile := "mapr_testdata.log" + outFile := "dmap4.stdout.tmp" + csvFile := "dmap4.csv.tmp" + expectedCsvFile := "dmap4.csv.expected" + queryFile := fmt.Sprintf("%s.query", csvFile) + expectedQueryFile := "dmap4.csv.query.expected" + + // Delete in case it exists already. Otherwise, test will fail. + os.Remove(csvFile) + + query := fmt.Sprintf("from STATS select count($time),$time,max($goroutines),"+ + "avg($goroutines),min($goroutines) group by $time order by count($time) "+ + "outfile append %s", csvFile) + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + // Run dmap command twice, it should append in the 2nd iteration the new results to the already existing + // fille as we specified "outfile append". That works transparently for any mapreduce query + // (e.g. also for the dtail command in streaming mode). But it is easier to test with the dmap + // command. + for i := 0; i < 2; i++ { + stdoutCh, stderrCh, cmdErrCh, err := startCommand(ctx, t, + "", "../dmap", + "--query", query, + "--cfg", "none", + "--logger", "stdout", + "--logLevel", "info", + "--noColor", inFile) + + if err != nil { + t.Error(err) + return + } + waitForCommand(ctx, t, stdoutCh, stderrCh, cmdErrCh) + } + + if err := compareFilesContents(t, csvFile, expectedCsvFile); err != nil { + t.Error(err) + return + } + if err := compareFiles(t, queryFile, expectedQueryFile); err != nil { + t.Error(err) + return + } + + os.Remove(outFile) + os.Remove(csvFile) + os.Remove(queryFile) +} |
