// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package testparser

import (
	"bytes"
	"encoding/json"
	"testing"
	"time"

	"github.com/google/go-cmp/cmp"
	"github.com/google/go-cmp/cmp/cmpopts"

	"go.fuchsia.dev/fuchsia/src/connectivity/network/testing/conformance/parseoutput"
	"go.fuchsia.dev/fuchsia/tools/build"
	"go.fuchsia.dev/fuchsia/tools/testing/runtests"
)

func compactJSON(jsonBytes []byte) []byte {
	buffer := bytes.NewBuffer([]byte{})
	json.Compact(buffer, jsonBytes)
	return buffer.Bytes()
}

func indentJSON(jsonBytes []byte) []byte {
	buffer := bytes.NewBuffer([]byte{})
	json.Indent(buffer, jsonBytes, "", "\t")
	return buffer.Bytes()
}

func testCase(t *testing.T, stdout string, want string) {
	t.Helper()
	actual, _ := json.Marshal(Parse([]byte(stdout)))
	if !bytes.Equal(actual, compactJSON([]byte(want))) {
		actualIndented := string(indentJSON(actual))
		wantIndented := string(indentJSON([]byte(want)))
		t.Errorf(
			"Parse(stdout) = `\n%v\n`; want `\n%v\n`",
			actualIndented,
			wantIndented,
		)
	}
}

func testCaseCmp(t *testing.T, stdout string, want []runtests.TestCaseResult) {
	r := Parse([]byte(stdout))
	if diff := cmp.Diff(want, r, cmpopts.SortSlices(func(a, b runtests.TestCaseResult) bool { return a.DisplayName < b.DisplayName })); diff != "" {
		t.Errorf("Found mismatch in %s (-want +got):\n%s", stdout, diff)
	}
}

func TestParseEmpty(t *testing.T) {
	testCaseCmp(t, "", []runtests.TestCaseResult{})
}

func TestParseInvalid(t *testing.T) {
	stdout := `
Mary had a little lamb
Its fleece was white as snow
And everywhere that Mary went
The lamb was sure to go
`
	testCaseCmp(t, stdout, []runtests.TestCaseResult{})
}

// If no test cases can be parsed, the output should be an empty slice, not a
// nil slice, so it gets serialized as an empty JSON array instead of as null.
func TestParseNoTestCases(t *testing.T) {
	testCase(t, "non-test output", "[]")
}

func TestParseTrfTest(t *testing.T) {
	stdout := `
Running test 'fuchsia-pkg://fuchsia.com/f2fs-fs-tests#meta/f2fs-unittest.cm'
[RUNNING]	BCacheTest.Trim
[PASSED]	BCacheTest.Trim
[RUNNING]	BCacheTest.Exception
[00371.417610][942028][942030][<root>] ERROR: [src/storage/f2fs/bcache.cc(45)] Invalid device size
[00371.417732][942028][942030][<root>] ERROR: [src/storage/f2fs/bcache.cc(52)] Block count overflow
[PASSED]	BCacheTest.Exception
[RUNNING]	CheckpointTest.Version
[PASSED]	CheckpointTest.Version
[stdout - BCacheTest.Trim]
magic [0xf2f52010 : 4076150800]
[stdout - BCacheTest.Trim]
major_ver [0x1 : 1]
[stdout - BCacheTest.Trim]
minor_ver [0x0 : 0]
[RUNNING]	FormatFilesystemTest.MkfsOptionsLabel
[00402.723886][969765][969767][<root>] INFO: [mkfs.cc(894)] This device doesn't support TRIM
[00402.743120][969765][969767][<root>] INFO: [mkfs.cc(894)] This device doesn't support TRIM
[stderr - FormatFilesystemTest.MkfsOptionsLabel]
ERROR: label length should be less than 16.
[PASSED]	FormatFilesystemTest.MkfsOptionsLabel
[RUNNING]	NodeManagerTest.TruncateExceptionCase
[stderr - NodeManagerTest.TruncateExceptionCase]
Error reading test result:File(read call failed: A FIDL client's channel to the service (anonymous) File was closed: PEER_CLOSED
[stderr - NodeManagerTest.TruncateExceptionCase]
[stderr - NodeManagerTest.TruncateExceptionCase]
Caused by:
[stderr - NodeManagerTest.TruncateExceptionCase]
    0: A FIDL client's channel to the service (anonymous) File was closed: PEER_CLOSED
[stderr - NodeManagerTest.TruncateExceptionCase]
    1: PEER_CLOSED)
[FAILED]	NodeManagerTest.TruncateExceptionCase
[RUNNING]	VnodeTest.TruncateExceptionCase
[stderr - VnodeTest.TruncateExceptionCase]
Test exited abnormally
[FAILED]	VnodeTest.TruncateExceptionCase
Failed tests: NodeManagerTest.TruncateExceptionCase, VnodeTest.TruncateExceptionCase
[duration - virtualization::virtualization_netdevice::remove_network]:	Still running after 60 seconds
[TIMED_OUT]	virtualization::virtualization_netdevice::remove_network
100 out of 102 tests passed...
fuchsia-pkg://fuchsia.com/f2fs-fs-tests#meta/f2fs-unittest.cm completed with result: FAILED
One or more test runs failed.
`
	want := []runtests.TestCaseResult{
		{
			DisplayName: "BCacheTest.Trim",
			CaseName:    "BCacheTest.Trim",
			Status:      runtests.TestSuccess,
			Format:      "FTF",
		}, {
			DisplayName: "BCacheTest.Exception",
			CaseName:    "BCacheTest.Exception",
			Status:      runtests.TestSuccess,
			Format:      "FTF",
		}, {
			DisplayName: "CheckpointTest.Version",
			CaseName:    "CheckpointTest.Version",
			Status:      runtests.TestSuccess,
			Format:      "FTF",
		}, {
			DisplayName: "FormatFilesystemTest.MkfsOptionsLabel",
			CaseName:    "FormatFilesystemTest.MkfsOptionsLabel",
			Status:      runtests.TestSuccess,
			Format:      "FTF",
		}, {
			DisplayName: "NodeManagerTest.TruncateExceptionCase",
			CaseName:    "NodeManagerTest.TruncateExceptionCase",
			Status:      runtests.TestFailure,
			Format:      "FTF",
			FailReason: "Error reading test result:File(read call failed: A FIDL client's channel to the service (anonymous) File was closed: PEER_CLOSED\n" +
				"Caused by:\n" +
				"    0: A FIDL client's channel to the service (anonymous) File was closed: PEER_CLOSED",
		}, {
			DisplayName: "VnodeTest.TruncateExceptionCase",
			CaseName:    "VnodeTest.TruncateExceptionCase",
			Status:      runtests.TestFailure,
			Format:      "FTF",
			FailReason:  "Test exited abnormally",
		}, {
			DisplayName: "virtualization::virtualization_netdevice::remove_network",
			CaseName:    "virtualization::virtualization_netdevice::remove_network",
			Status:      runtests.TestAborted,
			Format:      "FTF",
		},
	}
	testCaseCmp(t, stdout, want)
}

func TestParseTrfTestWithExpectations(t *testing.T) {
	stdout := `
Running test 'fuchsia-pkg://fuchsia.com/starnix_gvisor_tests?hash=c7c79a3408c5c0c89f61beb738f2dd71ca1c724f8d9c9d4a72e52631c8cbaacb#meta/chroot_test.cm'
[RUNNING]	ChrootTest.ProcMemSelfMapsNoEscapeProcOpen
[SKIPPED]	ChrootTest.ProcMemSelfMapsNoEscapeProcOpen
[RUNNING]	ChrootTest.Success
[RUNNING]	ChrootTest.ProcMemSelfFdsNoEscapeProcOpen
[stdout - fuchsia-pkg://fuchsia.com/starnix_gvisor_tests?hash=c7c79a3408c5c0c89f61beb738f2dd71ca1c724f8d9c9d4a72e52631c8cbaacb#meta/chroot_test.cm]
Note: Google Test filter = ChrootTest.Success:ChrootTest.ProcMemSelfFdsNoEscapeProcOpen:
[==========] Running 2 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 2 tests from ChrootTest
[ RUN      ] ChrootTest.Success
[       OK ] ChrootTest.Success (4 ms)
[ RUN      ] ChrootTest.ProcMemSelfFdsNoEscapeProcOpen
third_party/gvisor/test/syscalls/linux/chroot.cc:306: Failure
Value of: InForkedProcess(rest)
Expected: is OK and has a value that is equal to 0
	Actual: No Error (of type N12cloud_gvisor7testing12PosixErrorOrIiEE), has a value 256

[  FAILED  ] ChrootTest.ProcMemSelfFdsNoEscapeProcOpen (17 ms)
[----------] 2 tests from ChrootTest (21 ms total)

[----------] Global test environment tear-down
[==========] 2 tests from 1 test suite ran. (21 ms total)
[  PASSED  ] 1 tests.
[  FAILED  ] 1 tests, listed below:
[  FAILED  ] ChrootTest.ProcMemSelfFdsNoEscapeProcOpen

	1 FAILED TESTS
[stderr - fuchsia-pkg://fuchsia.com/starnix_gvisor_tests?hash=c7c79a3408c5c0c89f61beb738f2dd71ca1c724f8d9c9d4a72e52631c8cbaacb#meta/chroot_test.cm]
Check failed: strcmp(buf, "/foo") == 0
libc: Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 9 (chroot_test), pid 9 (<unknown>)
[01447.782299][expectation-comparer] INFO: ChrootTest.ProcMemSelfFdsNoEscapeProcOpen failure is expected, so it will be reported to the test runner as having passed.
[PASSED]	ChrootTest.Success
[01447.649121][expectation-comparer] INFO: ChrootTest.ProcMemSelfMapsNoEscapeProcOpen skip is expected.
[PASSED]	ChrootTest.ProcMemSelfFdsNoEscapeProcOpen
[01447.596892][runners:chroot_test.cm_Z3b2DH8][starnix] INFO: start_component: fuchsia-pkg://fuchsia.com/starnix_gvisor_tests?hash=c7c79a3408c5c0c89f61beb738f2dd71ca1c724f8d9c9d4a72e52631c8cbaacb#meta/chroot_test.cm
arguments: Some([])
manifest: Some(Dictionary { entries: Some([DictionaryEntry { key: "binary", value: Some(Str("data/tests/chroot_test")) }, DictionaryEntry { key: "environ", value: Some(StrVec(["TEST_TMPDIR=/data/tmp", "TEST_ON_GVISOR=1", "TEST_SRCDIR={pkg_path}/data/tests", "BENCHMARK_FORMAT=json", "BENCHMARK_OUT=/test_data/benchmark.json"])) }, DictionaryEntry { key: "user", value: Some(Str("fuchsia:x:0:0")) }, DictionaryEntry { key: "apex_hack", value: Some(StrVec(["com.android.runtime"])) }, DictionaryEntry { key: "features", value: Some(StrVec(["binder", "test_data"])) }, DictionaryEntry { key: "init", value: Some(StrVec([])) }, DictionaryEntry { key: "init_user", value: Some(Str("root:x:0:0")) }, DictionaryEntry { key: "kernel_cmdline", value: Some(Str("androidboot.hardware=starnix")) }, DictionaryEntry { key: "mounts", value: Some(StrVec(["/:ext4:data/system.img", "/vendor:ext4:data/testcases.img", "/data:remotefs:data", "/dev:devtmpfs", "/dev/shm:tmpfs", "/data/tmp:tmpfs", "/dev/shm:tmpfs", "/dev/pts:devpts", "/proc:proc", "/sys:sysfs", "/sys/fs/selinux:selinuxfs"])) }, DictionaryEntry { key: "name", value: Some(Str("gvisor_test")) }, DictionaryEntry { key: "startup_file_path", value: Some(Str("")) }, DictionaryEntry { key: "test_type", value: Some(Str("gunit")) }, DictionaryEntry { key: "args", value: Some(StrVec(["--gunit_list_tests", "--gunit_output=json:/test_data/test_result-b2be0d31-81ff-40c4-bdb9-0cfc9e93649d.json"])) }]), __source_breaking: _ })

[01447.598078][runners:chroot_test.cm_Z3b2DH8][starnix] INFO: start_component environment: ["TEST_TMPDIR=/data/tmp", "TEST_ON_GVISOR=1", "TEST_SRCDIR=/container/component/f169czoi4l/pkg/data/tests", "BENCHMARK_FORMAT=json", "BENCHMARK_OUT=/test_data/benchmark.json"]

[01447.641356][runners:chroot_test.cm_Z3b2DH8][stdio,starnix] INFO: ChrootTest.
	Success
	ProcMemSelfFdsNoEscapeProcOpen
	ProcMemSelfMapsNoEscapeProcOpen
[01447.780791][expectation-comparer] INFO: ChrootTest.Success success is expected.

2 out of 2 attempted tests passed, 1 tests skipped...
fuchsia-pkg://fuchsia.com/starnix_gvisor_tests?hash=c7c79a3408c5c0c89f61beb738f2dd71ca1c724f8d9c9d4a72e52631c8cbaacb#meta/chroot_test.cm completed with result: PASSED

PASS: 1 FAIL: 0 00:01 √  fuchsia-pkg://fuchsia.com/starnix_gvisor_tests#meta/chroot_test.cm
	`
	want := []runtests.TestCaseResult{
		{
			DisplayName: "ChrootTest.Success",
			CaseName:    "ChrootTest.Success",
			Status:      runtests.TestSuccess,
			Format:      "FTF",
			Tags: []build.TestTag{
				{
					Key:   "expectation",
					Value: "success",
				},
			},
		},
		{
			DisplayName: "ChrootTest.ProcMemSelfFdsNoEscapeProcOpen",
			CaseName:    "ChrootTest.ProcMemSelfFdsNoEscapeProcOpen",
			Status:      runtests.TestSuccess,
			Format:      "FTF",
			Tags: []build.TestTag{
				{
					Key:   "expectation",
					Value: "failure",
				},
			},
		},
		{
			DisplayName: "ChrootTest.ProcMemSelfMapsNoEscapeProcOpen",
			CaseName:    "ChrootTest.ProcMemSelfMapsNoEscapeProcOpen",
			Status:      runtests.TestSkipped,
			Format:      "FTF",
			Tags: []build.TestTag{
				{
					Key:   "expectation",
					Value: "skip",
				},
			},
		},
	}

	testCaseCmp(t, stdout, want)
}

func TestParseGoogleTest(t *testing.T) {
	stdout := `
Some times there is weird stuff in stdout.
[==========] Running 9 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 9 tests from SynonymDictTest
[ RUN      ] SynonymDictTest.IsInitializedEmpty
[       OK ] SynonymDictTest.IsInitializedEmpty (4 ms)
[ RUN      ] SynonymDictTest.ReadingEmptyFileReturnsFalse
[       OK ] SynonymDictTest.ReadingEmptyFileReturnsFalse (3 ms)
[ RUN      ] SynonymDictTest.ReadingNonexistentFileReturnsFalse
Some times tests print to stdout.
Their prints get interleaved with the results.
[       OK ] SynonymDictTest.ReadingNonexistentFileReturnsFalse (4 ms)
[ RUN      ] SynonymDictTest.LoadDictionary
[       OK ] SynonymDictTest.LoadDictionary (4 ms)
[ RUN      ] SynonymDictTest.GetSynonymsReturnsListOfWords
[       OK ] SynonymDictTest.GetSynonymsReturnsListOfWords (4 ms)
[ RUN      ] SynonymDictTest.GetSynonymsWhenNoSynonymsAreAvailable
[       OK ] SynonymDictTest.GetSynonymsWhenNoSynonymsAreAvailable (4 ms)
[ RUN      ] SynonymDictTest.AllWordsAreSynonymsOfEachOther
[       OK ] SynonymDictTest.AllWordsAreSynonymsOfEachOther (4 ms)
[ RUN      ] SynonymDictTest.GetSynonymsReturnsListOfWordsWithStubs
[  FAILED  ] SynonymDictTest.GetSynonymsReturnsListOfWordsWithStubs (4 ms)
[ RUN      ] SynonymDictTest.CompoundWordBug
[  SKIPPED ] SynonymDictTest.CompoundWordBug (4 ms)
[----------] 9 tests from SynonymDictTest (36 ms total)
[----------] Global test environment tear-down
[==========] 9 tests from 1 test suite ran. (38 ms total)
[  PASSED  ] 9 tests.
`
	want := []runtests.TestCaseResult{
		{
			DisplayName: "SynonymDictTest.IsInitializedEmpty",
			SuiteName:   "SynonymDictTest",
			CaseName:    "IsInitializedEmpty",
			Status:      runtests.TestSuccess,
			Duration:    4000000,
			Format:      "GoogleTest",
		}, {
			DisplayName: "SynonymDictTest.ReadingEmptyFileReturnsFalse",
			SuiteName:   "SynonymDictTest",
			CaseName:    "ReadingEmptyFileReturnsFalse",
			Status:      runtests.TestSuccess,
			Duration:    3000000,
			Format:      "GoogleTest",
		}, {
			DisplayName: "SynonymDictTest.ReadingNonexistentFileReturnsFalse",
			SuiteName:   "SynonymDictTest",
			CaseName:    "ReadingNonexistentFileReturnsFalse",
			Status:      runtests.TestSuccess,
			Duration:    4000000,
			Format:      "GoogleTest",
		}, {
			DisplayName: "SynonymDictTest.LoadDictionary",
			SuiteName:   "SynonymDictTest",
			CaseName:    "LoadDictionary",
			Status:      runtests.TestSuccess,
			Duration:    4000000,
			Format:      "GoogleTest",
		}, {
			DisplayName: "SynonymDictTest.GetSynonymsReturnsListOfWords",
			SuiteName:   "SynonymDictTest",
			CaseName:    "GetSynonymsReturnsListOfWords",
			Status:      runtests.TestSuccess,
			Duration:    4000000,
			Format:      "GoogleTest",
		}, {
			DisplayName: "SynonymDictTest.GetSynonymsWhenNoSynonymsAreAvailable",
			SuiteName:   "SynonymDictTest",
			CaseName:    "GetSynonymsWhenNoSynonymsAreAvailable",
			Status:      runtests.TestSuccess,
			Duration:    4000000,
			Format:      "GoogleTest",
		}, {
			DisplayName: "SynonymDictTest.AllWordsAreSynonymsOfEachOther",
			SuiteName:   "SynonymDictTest",
			CaseName:    "AllWordsAreSynonymsOfEachOther",
			Status:      runtests.TestSuccess,
			Duration:    4000000,
			Format:      "GoogleTest",
		}, {
			DisplayName: "SynonymDictTest.GetSynonymsReturnsListOfWordsWithStubs",
			SuiteName:   "SynonymDictTest",
			CaseName:    "GetSynonymsReturnsListOfWordsWithStubs",
			Status:      runtests.TestFailure,
			Duration:    4000000,
			Format:      "GoogleTest",
		}, {
			DisplayName: "SynonymDictTest.CompoundWordBug",
			SuiteName:   "SynonymDictTest",
			CaseName:    "CompoundWordBug",
			Status:      runtests.TestSkipped,
			Duration:    4000000,
			Format:      "GoogleTest",
		},
	}
	testCaseCmp(t, stdout, want)
}

func TestParseGo(t *testing.T) {
	stdout := `
2020/06/17 18:15:06.096179 testrunner DEBUG: starting: [host_x64/fake_tests --test.timeout 5m -test.v]
=== RUN   TestParseEmpty
--- PASS: TestParseEmpty (0.01s)
=== RUN   TestParseInvalid
--- PASS: TestParseInvalid (0.02s)
=== RUN   TestParseGoogleTest
    TestParseGoogleTest: experimental/users/shayba/testparser/testparser_test.go:15: Parse(invalid).Parse() = [{SynonymDictTest.IsInitializedEmpty Pass 4} {SynonymDictTest.ReadingEmptyFileReturnsFalse Pass 3} {SynonymDictTest.ReadingNonexistentFileReturnsFalse Pass 4} {SynonymDictTest.LoadDictionary Pass 4} {SynonymDictTest.GetSynonymsReturnsListOfWords Pass 4} {SynonymDictTest.GetSynonymsWhenNoSynonymsAreAvailable Pass 4} {SynonymDictTest.AllWordsAreSynonymsOfEachOther Pass 4} {SynonymDictTest.GetSynonymsReturnsListOfWordsWithStubs Fail 4} {SynonymDictTest.CompoundWordBug Skip 4}]; want []
--- FAIL: TestParseGoogleTest (3.00s)
=== RUN   TestFail
    TestFail: experimental/users/shayba/testparser/testparser_test.go:68: Oops!
--- FAIL: TestFail (0.00s)
=== RUN   TestSkip
    TestSkip: experimental/users/shayba/testparser/testparser_test.go:72: Huh?
--- SKIP: TestSkip (0.00s)
=== RUN   TestAdd
=== RUN   TestAdd/add_foo
=== RUN   TestAdd/add_bar
=== RUN   TestAdd/add_baz
--- PASS: TestAdd (0.00s)
    --- PASS: TestAdd/add_foo (0.00s)
    --- PASS: TestAdd/add_bar (0.00s)
		--- PASS: TestAdd/add_baz (0.00s)
ok 8 host_x64/fake_tests (4.378744489s)
`
	want := []runtests.TestCaseResult{
		{
			DisplayName: "TestParseEmpty",
			CaseName:    "TestParseEmpty",
			Status:      runtests.TestSuccess,
			Duration:    10000000,
			Format:      "Go",
		}, {
			DisplayName: "TestParseInvalid",
			CaseName:    "TestParseInvalid",
			Status:      runtests.TestSuccess,
			Duration:    20000000,
			Format:      "Go",
		}, {
			DisplayName: "TestParseGoogleTest",
			CaseName:    "TestParseGoogleTest",
			Status:      runtests.TestFailure,
			Duration:    3000000000,
			Format:      "Go",
		}, {
			DisplayName: "TestFail",
			CaseName:    "TestFail",
			Status:      runtests.TestFailure,
			Format:      "Go",
		}, {
			DisplayName: "TestSkip",
			CaseName:    "TestSkip",
			Status:      runtests.TestSkipped,
			Format:      "Go",
		}, {
			DisplayName: "TestAdd",
			CaseName:    "TestAdd",
			Status:      runtests.TestSuccess,
			Format:      "Go",
		}, {
			DisplayName: "TestAdd/add_foo",
			SuiteName:   "TestAdd",
			CaseName:    "add_foo",
			Status:      runtests.TestSuccess,
			Format:      "Go",
		}, {
			DisplayName: "TestAdd/add_bar",
			SuiteName:   "TestAdd",
			CaseName:    "add_bar",
			Status:      runtests.TestSuccess,
			Format:      "Go",
		}, {
			DisplayName: "TestAdd/add_baz",
			SuiteName:   "TestAdd",
			CaseName:    "add_baz",
			Status:      runtests.TestSuccess,
			Format:      "Go",
		},
	}
	testCaseCmp(t, stdout, want)
}

func TestParseGoPanic(t *testing.T) {
	stdout := `
=== RUN   TestReboot
Running /tmp/qemu-distro868073415/bin/qemu-system-x86_64 [-initrd /usr/local/google/home/curtisgalloway/src/fuchsia/out/core.x64/fuchsia.zbi -kernel /usr/local/google/home/curtisgalloway/src/fuchsia/out/core.x64/host_x64/test_data/qemu/multiboot.bin -nographic -smp 4,threads=2 -trace enable=vm_state_notify -machine q35 -device isa-debug-exit,iobase=0xf4,iosize=0x04 -cpu Haswell,+smap,-check,-fsgsbase -m 8192 -net none -append kernel.serial=legacy kernel.entropy-mixin=1420bb81dc0396b37cc2d0aa31bb2785dadaf9473d0780ecee1751afb5867564 kernel.halt-on-panic=true]
Checking for QEMU boot...
9234@1592444858.702846:vm_state_notify running 1 reason 9
SeaBIOS (version rel-1.11.1-0-g0551a4be2c-prebuilt.qemu-project.org)
panic: test timed out after 1s

goroutine 52 [running]:
testing.(*M).startAlarm.func1()
	/usr/local/google/home/curtisgalloway/src/fuchsia/prebuilt/third_party/go/linux-x64/src/testing/testing.go:1459 +0xdf
created by time.goFunc
	/usr/local/google/home/curtisgalloway/src/fuchsia/prebuilt/third_party/go/linux-x64/src/time/sleep.go:168 +0x44

goroutine 1 [chan receive]:
testing.(*T).Run(0xc00014c120, 0x570c48, 0xa, 0x57a1a8, 0x47ebc6)
	/usr/local/google/home/curtisgalloway/src/fuchsia/prebuilt/third_party/go/linux-x64/src/testing/testing.go:1043 +0x37e
testing.runTests.func1(0xc00014c000)
	/usr/local/google/home/curtisgalloway/src/fuchsia/prebuilt/third_party/go/linux-x64/src/testing/testing.go:1284 +0x78
testing.tRunner(0xc00014c000, 0xc000088e10)
	/usr/local/google/home/curtisgalloway/src/fuchsia/prebuilt/third_party/go/linux-x64/src/testing/testing.go:991 +0xdc
testing.runTests(0xc000134020, 0x6896d0, 0x1, 0x1, 0x0)
	/usr/local/google/home/curtisgalloway/src/fuchsia/prebuilt/third_party/go/linux-x64/src/testing/testing.go:1282 +0x2a7
testing.(*M).Run(0xc000148000, 0x0)
	/usr/local/google/home/curtisgalloway/src/fuchsia/prebuilt/third_party/go/linux-x64/src/testing/testing.go:1199 +0x15f
main.main()
	_testmain.go:44 +0x135

goroutine 19 [IO wait]:
internal/poll.runtime_pollWait(0x7f1d4a735d88, 0x72, 0xffffffffffffffff)
	/usr/local/google/home/curtisgalloway/src/fuchsia/prebuilt/third_party/go/linux-x64/src/runtime/netpoll.go:203 +0x55
internal/poll.(*pollDesc).wait(0xc0004f6258, 0x72, 0xf01, 0xfee, 0xffffffffffffffff)
	/usr/local/google/home/curtisgalloway/src/fuchsia/prebuilt/third_party/go/linux-x64/src/internal/poll/fd_poll_runtime.go:87 +0x45
internal/poll.(*pollDesc).waitRead(...)
	/usr/local/google/home/curtisgalloway/src/fuchsia/prebuilt/third_party/go/linux-x64/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc0004f6240, 0xc0005ca012, 0xfee, 0xfee, 0x0, 0x0, 0x0)
	/usr/local/google/home/curtisgalloway/src/fuchsia/prebuilt/third_party/go/linux-x64/src/internal/poll/fd_unix.go:169 +0x19b
os.(*File).read(...)
	/usr/local/google/home/curtisgalloway/src/fuchsia/prebuilt/third_party/go/linux-x64/src/os/file_unix.go:263
os.(*File).Read(0xc000010040, 0xc0005ca012, 0xfee, 0xfee, 0x1, 0x0, 0x0)
	/usr/local/google/home/curtisgalloway/src/fuchsia/prebuilt/third_party/go/linux-x64/src/os/file.go:116 +0x71
bufio.(*Reader).fill(0xc0004f63c0)
	/usr/local/google/home/curtisgalloway/src/fuchsia/prebuilt/third_party/go/linux-x64/src/bufio/bufio.go:100 +0x103
bufio.(*Reader).ReadSlice(0xc0004f63c0, 0x47040a, 0x689dc0, 0xc0005c4080, 0x1, 0xc00015bd40, 0x4b2ee1)
	/usr/local/google/home/curtisgalloway/src/fuchsia/prebuilt/third_party/go/linux-x64/src/bufio/bufio.go:359 +0x3d
bufio.(*Reader).ReadBytes(0xc0004f63c0, 0xa, 0x5734e6, 0x15, 0xffffffffffffffff, 0x46, 0x0)
	/usr/local/google/home/curtisgalloway/src/fuchsia/prebuilt/third_party/go/linux-x64/src/bufio/bufio.go:438 +0x7a
bufio.(*Reader).ReadString(...)
	/usr/local/google/home/curtisgalloway/src/fuchsia/prebuilt/third_party/go/linux-x64/src/bufio/bufio.go:475
go.fuchsia.dev/fuchsia/src/testing/qemu.(*Instance).checkForLogMessage(0xc000134460, 0xc0004f63c0, 0x5734e6, 0x15, 0x573893, 0x16)
	/usr/local/google/home/curtisgalloway/src/fuchsia/out/core.x64/host_x64/gen/gopaths/reboot_tests/src/go.fuchsia.dev/fuchsia/src/testing/qemu/qemu.go:497 +0x46
go.fuchsia.dev/fuchsia/src/testing/qemu.(*Instance).WaitForLogMessage(...)
	/usr/local/google/home/curtisgalloway/src/fuchsia/out/core.x64/host_x64/gen/gopaths/reboot_tests/src/go.fuchsia.dev/fuchsia/src/testing/qemu/qemu.go:432
go.fuchsia.dev/fuchsia/src/tests/reboot.TestReboot(0xc00014c120)
	/usr/local/google/home/curtisgalloway/src/fuchsia/out/core.x64/host_x64/gen/gopaths/reboot_tests/src/go.fuchsia.dev/fuchsia/src/tests/reboot/reboot_test.go:52 +0x36c
testing.tRunner(0xc00014c120, 0x57a1a8)
	/usr/local/google/home/curtisgalloway/src/fuchsia/prebuilt/third_party/go/linux-x64/src/testing/testing.go:991 +0xdc
created by testing.(*T).Run
	/usr/local/google/home/curtisgalloway/src/fuchsia/prebuilt/third_party/go/linux-x64/src/testing/testing.go:1042 +0x357
	`
	want := []runtests.TestCaseResult{
		{
			DisplayName: "TestReboot",
			CaseName:    "TestReboot",
			Status:      runtests.TestFailure,
			Duration:    1000000000,
			Format:      "Go",
		},
	}
	testCaseCmp(t, stdout, want)
}

func TestParseRust(t *testing.T) {
	stdout := `
running 3 tests
test tests::ignored_test ... ignored
[stdout - legacy_test]
test tests::test_add_hundred ... ok
[stdout - legacy_test]
test tests::test_add ... FAILED
[stdout - legacy_test]
test tests::test_substract ... FAILED
[stdout - legacy_test]
[stdout - legacy_test]
failures:
[stdout - legacy_test]
[stdout - legacy_test]
---- tests::test_add_hundred stdout ----
[stdout - legacy_test]
---- tests::test_add_hundred stderr ----
[stdout - legacy_test]
booooo I printed an error, but it doesn't count as fail reason
---- tests::test_add stdout ----
[stdout - legacy_test]
---- tests::test_add stderr ----
[stdout - legacy_test]
thread 'main' panicked at ../../src/lib/zircon/rust/src/channel.rs:761:9:
[stdout - legacy_test]
assertion failed: ` + "`(left != right)`" + `
[stdout - legacy_test]
  left: ` + "`ObjectType(PORT)`" + `,
[stdout - legacy_test]
  right: ` + "`ObjectType(PORT)`" + `
[stdout - legacy_test]
stack backtrace:
[stdout - legacy_test]
{{{reset}}}
[stdout - legacy_test]
{{{module:0x0::elf:cb02c721da2e5287}}}
[stdout - legacy_test]
{{{mmap:0x2de1be9a000:0x11a5c:load:0x0:r:0x0}}}
[stdout - legacy_test]
[stdout - legacy_test]
---- tests::test_substract stdout ----
[stdout - legacy_test]
---- tests::test_substract stderr ----
[stdout - legacy_test]
thread 'main' panicked at ../../src/lib/zircon/rust/src/channel.rs:783:9:
[stdout - legacy_test]
assertion failed: ` + "`(left != right)`" + `
[stdout - legacy_test]
  left: ` + "`Err((5, 0))`" + `,
[stdout - legacy_test]
  right: ` + "`Err((5, 0))`" + `
[stdout - legacy_test]
stack backtrace:
[stdout - legacy_test]
{{{reset}}}
[stdout - legacy_test]
{{{module:0x0::elf:cb02c721da2e5287}}}
[stdout - legacy_test]
{{{mmap:0x3441843f000:0x11a5c:load:0x0:r:0x0}}}
[stdout - legacy_test]
{{{mmap:0x34418451000:0x18f90:load:0x0:rx:0x12000}}}
[stdout - legacy_test]
failures:
[stdout - legacy_test]
    test tests::test_add
[stdout - legacy_test]
    test tests::test_substract
[stdout - legacy_test]
[stdout - legacy_test]
test result: FAILED. 1 passed; 2 failed; 1 ignored; 0 measured; 0 filtered out; finished in 5.30s
[stdout - legacy_test]
[FAILED]	legacy_test
Failed tests: legacy_test
0 out of 1 tests passed...
fuchsia-pkg://fuchsia.com/fuchsiatests#meta/some-tests.cm completed with result: FAILED
One or more test runs failed.`

	want := []runtests.TestCaseResult{
		{
			DisplayName: "tests::ignored_test",
			SuiteName:   "tests",
			CaseName:    "ignored_test",
			Status:      runtests.TestSkipped,
			Format:      "Rust",
		}, {
			DisplayName: "tests::test_add_hundred",
			SuiteName:   "tests",
			CaseName:    "test_add_hundred",
			Status:      runtests.TestSuccess,
			Format:      "Rust",
		}, {
			DisplayName: "tests::test_add",
			SuiteName:   "tests",
			CaseName:    "test_add",
			Status:      runtests.TestFailure,
			Format:      "Rust",
			FailReason:  "thread 'main' panicked at ../../src/lib/zircon/rust/src/channel.rs:761:9:\nassertion failed: `(left != right)`\n  left: `ObjectType(PORT)`,\n  right: `ObjectType(PORT)`",
		}, {
			DisplayName: "tests::test_substract",
			SuiteName:   "tests",
			CaseName:    "test_substract",
			Status:      runtests.TestFailure,
			Format:      "Rust",
			FailReason:  "thread 'main' panicked at ../../src/lib/zircon/rust/src/channel.rs:783:9:\nassertion failed: `(left != right)`\n  left: `Err((5, 0))`,\n  right: `Err((5, 0))`",
		},
	}
	testCaseCmp(t, stdout, want)
}

func TestParseZircon(t *testing.T) {
	stdout := `
CASE minfs_truncate_tests                               [STARTED]
    TestTruncateSmall                                   [RUNNING] [PASSED] (1 ms)
    (TestTruncateLarge<1 << 10, 1000>)                  [RUNNING] [PASSED] (20414 ms)
    (TestTruncateLarge<1 << 15, 500>)                   [RUNNING] [PASSED] (10012 ms)
    (TestTruncateLarge<1 << 20, 500>)                   [RUNNING] [FAILED] (10973 ms)
    (TestTruncateLarge<1 << 25, 500>)                   [IGNORED]
CASE minfs_truncate_tests                               [PASSED]

CASE minfs_sparse_tests                                 [STARTED]
    (test_sparse<0, 0, kBlockSize>)                     [RUNNING] [PASSED] (19 ms)
    (test_sparse<kBlockSize / 2, 0, kBlockSize>)        [RUNNING] [PASSED] (20 ms)
    (test_sparse<kBlockSize / 2, kBlockSize, kBlockSize>) [RUNNING] [PASSED] (19 ms)
    (test_sparse<kBlockSize, 0, kBlockSize>)            [RUNNING] [PASSED] (19 ms)
    (test_sparse<kBlockSize, kBlockSize / 2, kBlockSize>) [RUNNING] [PASSED] (19 ms)
    (test_sparse<kBlockSize * kDirectBlocks, kBlockSize * kDirectBlocks - kBlockSize, kBlockSize * 2>) [RUNNING] [PASSED] (20 ms)
    (test_sparse<kBlockSize * kDirectBlocks, kBlockSize * kDirectBlocks - kBlockSize, kBlockSize * 32>) [RUNNING] [PASSED] (24 ms)
    (test_sparse<kBlockSize * kDirectBlocks + kBlockSize, kBlockSize * kDirectBlocks - kBlockSize, kBlockSize * 32>) [RUNNING] [PASSED] (24 ms)
    (test_sparse<kBlockSize * kDirectBlocks + kBlockSize, kBlockSize * kDirectBlocks + 2 * kBlockSize, kBlockSize * 32>) [RUNNING] [PASSED] (25 ms)
CASE minfs_sparse_tests                                 [PASSED]

CASE minfs_rw_workers_test                              [STARTED]
    TestWorkSingleThread                                [RUNNING] [PASSED] (40920 ms)
CASE minfs_rw_workers_test                              [PASSED]

CASE minfs_maxfile_tests                                [STARTED]
    test_maxfile                                        [RUNNING] [PASSED] (62243 ms)
CASE minfs_maxfile_tests                                [PASSED]

CASE minfs_directory_tests                              [STARTED]
    TestDirectoryLarge                                  [RUNNING] [PASSED] (3251 ms)
    TestDirectoryReaddir                                [RUNNING] [PASSED] (69 ms)
    TestDirectoryReaddirLarge                           [RUNNING] [PASSED] (6414 ms)
CASE minfs_directory_tests                              [PASSED]

CASE minfs_basic_tests                                  [STARTED]
    test_basic                                          [RUNNING] [PASSED] (21 ms)
CASE minfs_basic_tests                                  [PASSED]
====================================================
Results for test binary "host_x64-asan/fs-host":
    SUCCESS!  All test cases passed!
    CASES:  6     SUCCESS:  5     FAILED:  1
====================================================
`

	want := []runtests.TestCaseResult{
		{
			DisplayName: "minfs_truncate_tests.TestTruncateSmall",
			SuiteName:   "minfs_truncate_tests",
			CaseName:    "TestTruncateSmall",
			Duration:    1000000,
			Status:      runtests.TestSuccess,
			Format:      "Zircon utest",
		}, {
			DisplayName: "minfs_truncate_tests.(TestTruncateLarge\u003c1 \u003c\u003c 10, 1000\u003e)",
			SuiteName:   "minfs_truncate_tests",
			CaseName:    "(TestTruncateLarge\u003c1 \u003c\u003c 10, 1000\u003e)",
			Duration:    20414000000,
			Status:      runtests.TestSuccess,
			Format:      "Zircon utest",
		}, {
			DisplayName: "minfs_truncate_tests.(TestTruncateLarge\u003c1 \u003c\u003c 15, 500\u003e)",
			SuiteName:   "minfs_truncate_tests",
			CaseName:    "(TestTruncateLarge\u003c1 \u003c\u003c 15, 500\u003e)",
			Duration:    10012000000,
			Status:      runtests.TestSuccess,
			Format:      "Zircon utest",
		}, {
			DisplayName: "minfs_truncate_tests.(TestTruncateLarge\u003c1 \u003c\u003c 20, 500\u003e)",
			SuiteName:   "minfs_truncate_tests",
			CaseName:    "(TestTruncateLarge\u003c1 \u003c\u003c 20, 500\u003e)",
			Duration:    10973000000,
			Status:      runtests.TestFailure,
			Format:      "Zircon utest",
		}, {
			DisplayName: "minfs_truncate_tests.(TestTruncateLarge\u003c1 \u003c\u003c 25, 500\u003e)",
			SuiteName:   "minfs_truncate_tests",
			CaseName:    "(TestTruncateLarge\u003c1 \u003c\u003c 25, 500\u003e)",
			Duration:    0,
			Status:      runtests.TestSkipped,
			Format:      "Zircon utest",
		}, {
			DisplayName: "minfs_sparse_tests.(test_sparse\u003c0, 0, kBlockSize\u003e)",
			SuiteName:   "minfs_sparse_tests",
			CaseName:    "(test_sparse\u003c0, 0, kBlockSize\u003e)",
			Duration:    19000000,
			Status:      runtests.TestSuccess,
			Format:      "Zircon utest",
		}, {
			DisplayName: "minfs_sparse_tests.(test_sparse\u003ckBlockSize / 2, 0, kBlockSize\u003e)",
			SuiteName:   "minfs_sparse_tests",
			CaseName:    "(test_sparse\u003ckBlockSize / 2, 0, kBlockSize\u003e)",
			Duration:    20000000,
			Status:      runtests.TestSuccess,
			Format:      "Zircon utest",
		}, {
			DisplayName: "minfs_sparse_tests.(test_sparse\u003ckBlockSize / 2, kBlockSize, kBlockSize\u003e)",
			SuiteName:   "minfs_sparse_tests",
			CaseName:    "(test_sparse\u003ckBlockSize / 2, kBlockSize, kBlockSize\u003e)",
			Duration:    19000000,
			Status:      runtests.TestSuccess,
			Format:      "Zircon utest",
		}, {
			DisplayName: "minfs_sparse_tests.(test_sparse\u003ckBlockSize, 0, kBlockSize\u003e)",
			SuiteName:   "minfs_sparse_tests",
			CaseName:    "(test_sparse\u003ckBlockSize, 0, kBlockSize\u003e)",
			Duration:    19000000,
			Status:      runtests.TestSuccess,
			Format:      "Zircon utest",
		}, {
			DisplayName: "minfs_sparse_tests.(test_sparse\u003ckBlockSize, kBlockSize / 2, kBlockSize\u003e)",
			SuiteName:   "minfs_sparse_tests",
			CaseName:    "(test_sparse\u003ckBlockSize, kBlockSize / 2, kBlockSize\u003e)",
			Duration:    19000000,
			Status:      runtests.TestSuccess,
			Format:      "Zircon utest",
		}, {
			DisplayName: "minfs_sparse_tests.(test_sparse\u003ckBlockSize * kDirectBlocks, kBlockSize * kDirectBlocks - kBlockSize, kBlockSize * 2\u003e)",
			SuiteName:   "minfs_sparse_tests",
			CaseName:    "(test_sparse\u003ckBlockSize * kDirectBlocks, kBlockSize * kDirectBlocks - kBlockSize, kBlockSize * 2\u003e)",
			Duration:    20000000,
			Status:      runtests.TestSuccess,
			Format:      "Zircon utest",
		}, {
			DisplayName: "minfs_sparse_tests.(test_sparse\u003ckBlockSize * kDirectBlocks, kBlockSize * kDirectBlocks - kBlockSize, kBlockSize * 32\u003e)",
			SuiteName:   "minfs_sparse_tests",
			CaseName:    "(test_sparse\u003ckBlockSize * kDirectBlocks, kBlockSize * kDirectBlocks - kBlockSize, kBlockSize * 32\u003e)",
			Duration:    24000000,
			Status:      runtests.TestSuccess,
			Format:      "Zircon utest",
		}, {
			DisplayName: "minfs_sparse_tests.(test_sparse\u003ckBlockSize * kDirectBlocks + kBlockSize, kBlockSize * kDirectBlocks - kBlockSize, kBlockSize * 32\u003e)",
			SuiteName:   "minfs_sparse_tests",
			CaseName:    "(test_sparse\u003ckBlockSize * kDirectBlocks + kBlockSize, kBlockSize * kDirectBlocks - kBlockSize, kBlockSize * 32\u003e)",
			Duration:    24000000,
			Status:      runtests.TestSuccess,
			Format:      "Zircon utest",
		}, {
			DisplayName: "minfs_sparse_tests.(test_sparse\u003ckBlockSize * kDirectBlocks + kBlockSize, kBlockSize * kDirectBlocks + 2 * kBlockSize, kBlockSize * 32\u003e)",
			SuiteName:   "minfs_sparse_tests",
			CaseName:    "(test_sparse\u003ckBlockSize * kDirectBlocks + kBlockSize, kBlockSize * kDirectBlocks + 2 * kBlockSize, kBlockSize * 32\u003e)",
			Duration:    25000000,
			Status:      runtests.TestSuccess,
			Format:      "Zircon utest",
		}, {
			DisplayName: "minfs_rw_workers_test.TestWorkSingleThread",
			SuiteName:   "minfs_rw_workers_test",
			CaseName:    "TestWorkSingleThread",
			Duration:    40920000000,
			Status:      runtests.TestSuccess,
			Format:      "Zircon utest",
		}, {
			DisplayName: "minfs_maxfile_tests.test_maxfile",
			SuiteName:   "minfs_maxfile_tests",
			CaseName:    "test_maxfile",
			Duration:    62243000000,
			Status:      runtests.TestSuccess,
			Format:      "Zircon utest",
		}, {
			DisplayName: "minfs_directory_tests.TestDirectoryLarge",
			SuiteName:   "minfs_directory_tests",
			CaseName:    "TestDirectoryLarge",
			Duration:    3251000000,
			Status:      runtests.TestSuccess,
			Format:      "Zircon utest",
		}, {
			DisplayName: "minfs_directory_tests.TestDirectoryReaddir",
			SuiteName:   "minfs_directory_tests",
			CaseName:    "TestDirectoryReaddir",
			Duration:    69000000,
			Status:      runtests.TestSuccess,
			Format:      "Zircon utest",
		}, {
			DisplayName: "minfs_directory_tests.TestDirectoryReaddirLarge",
			SuiteName:   "minfs_directory_tests",
			CaseName:    "TestDirectoryReaddirLarge",
			Duration:    6414000000,
			Status:      runtests.TestSuccess,
			Format:      "Zircon utest",
		}, {
			DisplayName: "minfs_basic_tests.test_basic",
			SuiteName:   "minfs_basic_tests",
			CaseName:    "test_basic",
			Duration:    21000000,
			Status:      runtests.TestSuccess,
			Format:      "Zircon utest",
		},
	}
	testCaseCmp(t, stdout, want)
}

// Regression test for https://fxbug.dev/42128506
func TestFxb51327(t *testing.T) {
	stdout := `
[==========] Running 13 tests from 3 test suites.
[----------] Global test environment set-up.
[----------] 10 tests from UltrasoundTest
[ RUN      ] UltrasoundTest.CreateRenderer
[00392.026593][276880][276883][test-devmgr] INFO:
[00392.026655][276880][276883][test-devmgr] INFO: Running remove task for device 0xc64fcfe910 'Virtual_Audio_Device_(default)'
[00392.026783][276880][276883][test-devmgr] INFO: Removed device 0xc64fcfe910 'Virtual_Audio_Device_(default)': ZX_OK
[00392.026793][276880][276883][test-devmgr] INFO: Removing device 0xc64fcfe910 'Virtual_Audio_Device_(default)' parent=0xc64fcfe610
[00391.063831][276429][279657][audio_pipeline_test] INFO: [hermetic_audio_environment.cc(40)] Using path '/pkg/data/ultrasound' for /config/data directory for fuchsia-pkg://fuchsia.com/audio_core#meta/audio_core_nodevfs_noconfigdata.cm.
[00391.064291][276429][279657][audio_pipeline_test] INFO: [hermetic_audio_environment.cc(54)] No config_data provided for fuchsia-pkg://fuchsia.com/virtual_audio_service#meta/virtual_audio_service_nodevfs.cm
[00391.820503][280027][280029][audio_core] INFO: [main.cc(36)] AudioCore starting up
[00391.891903][280027][280029][audio_core] INFO: [policy_loader.cc(244)] No policy found; using default.
[00392.007930][280027][280375][audio_core] ERROR: [src/media/audio/audio_core/driver_output.cc(166)] OUTPUT UNDERFLOW: Missed mix target by (worst-case, expected) = (49, 99) ms. Cooling down for 1000 milliseconds.
[00392.007972][280027][280375][audio_core] ERROR: [src/media/audio/audio_core/reporter.cc(428)] UNDERFLOW: Failed to obtain the Cobalt logger
[00392.026545][280027][280375][audio_core] INFO: [audio_driver_v2.cc(585)] Output shutting down 'Stream channel closed unexpectedly', status:-24
[00392.026600][280027][280375][audio_core] ERROR: [src/media/audio/audio_core/audio_driver_v2.cc(75)] AudioDriver failed with error: -24: -24 (ZX_ERR_PEER_CLOSED)
[       OK ] UltrasoundTest.CreateRenderer (964 ms)
[ RUN      ] UltrasoundTest.RendererDoesNotSupportSetPcmStreamType
[00392.169044][276880][276883][test-devmgr] INFO:
[00392.169124][276880][276883][test-devmgr] INFO: Running remove task for device 0xc64fcfe910 'Virtual_Audio_Device_(default)'
[00392.169299][276880][276883][test-devmgr] INFO: Removed device 0xc64fcfe910 'Virtual_Audio_Device_(default)': ZX_OK
[00392.169321][276880][276883][test-devmgr] INFO: Removing device 0xc64fcfe910 'Virtual_Audio_Device_(default)' parent=0xc64fcfe610
[00392.026628][280027][280375][audio_core] ERROR: [src/media/audio/audio_core/audio_driver_v2.cc(305)] AudioDriver failed with error: -24: -24 (ZX_ERR_PEER_CLOSED)
[00392.140514][280027][280436][audio_core] ERROR: [src/media/audio/audio_core/driver_output.cc(166)] OUTPUT UNDERFLOW: Missed mix target by (worst-case, expected) = (48.95, 98) ms. Cooling down for 1000 milliseconds.
[00392.140549][280027][280436][audio_core] ERROR: [src/media/audio/audio_core/reporter.cc(428)] UNDERFLOW: Failed to obtain the Cobalt logger
[00392.158798][280027][280029][audio_core] ERROR: [src/media/audio/audio_core/ultrasound_renderer.cc(55)] Unsupported method SetPcmStreamType on ultrasound renderer
[00392.168963][280027][280436][audio_core] INFO: [audio_driver_v2.cc(585)] Output shutting down 'Stream channel closed unexpectedly', status:-24
[       OK ] UltrasoundTest.RendererDoesNotSupportSetPcmStreamType (142 ms)
[ RUN      ] UltrasoundTest.RendererDoesNotSupportSetUsage
[00392.281231][276880][276883][test-devmgr] INFO:
[00392.281289][276880][276883][test-devmgr] INFO: Running remove task for device 0xc64fcfe910 'Virtual_Audio_Device_(default)'
[00392.281417][276880][276883][test-devmgr] INFO: Removed device 0xc64fcfe910 'Virtual_Audio_Device_(default)': ZX_OK
[00392.281428][276880][276883][test-devmgr] INFO: Removing device 0xc64fcfe910 'Virtual_Audio_Device_(default)' parent=0xc64fcfe610
[00392.169001][280027][280436][audio_core] ERROR: [src/media/audio/audio_core/audio_driver_v2.cc(75)] AudioDriver failed with error: -24: -24 (ZX_ERR_PEER_CLOSED)
[00392.169021][280027][280436][audio_core] ERROR: [src/media/audio/audio_core/audio_driver_v2.cc(305)] AudioDriver failed with error: -24: -24 (ZX_ERR_PEER_CLOSED)
[00392.253474][280027][280498][audio_core] ERROR: [src/media/audio/audio_core/driver_output.cc(166)] OUTPUT UNDERFLOW: Missed mix target by (worst-case, expected) = (20.51, 70) ms. Cooling down for 1000 milliseconds.
[00392.253501][280027][280498][audio_core] ERROR: [src/media/audio/audio_core/reporter.cc(428)] UNDERFLOW: Failed to obtain the Cobalt logger
[00392.270892][280027][280029][audio_core] ERROR: [src/media/audio/audio_core/ultrasound_renderer.cc(59)] Unsupported method SetUsage on ultrasound renderer
[00392.281120][280027][280498][audio_core] INFO: [audio_driver_v2.cc(585)] Output shutting down 'Stream channel closed unexpectedly', status:-24
[       OK ] UltrasoundTest.RendererDoesNotSupportSetUsage (112 ms)
[ RUN      ] UltrasoundTest.RendererDoesNotSupportBindGainControl
[00392.423415][276880][276883][test-devmgr] INFO:
[00392.423473][276880][276883][test-devmgr] INFO: Running remove task for device 0xc64fcfe910 'Virtual_Audio_Device_(default)'
[00392.423785][276880][276883][test-devmgr] INFO: Removed device 0xc64fcfe910 'Virtual_Audio_Device_(default)': ZX_OK
[00392.423800][276880][276883][test-devmgr] INFO: Removing device 0xc64fcfe910 'Virtual_Audio_Device_(default)' parent=0xc64fcfe610
[00392.281148][280027][280498][audio_core] ERROR: [src/media/audio/audio_core/audio_driver_v2.cc(75)] AudioDriver failed with error: -24: -24 (ZX_ERR_PEER_CLOSED)
[00392.281169][280027][280498][audio_core] ERROR: [src/media/audio/audio_core/audio_driver_v2.cc(305)] AudioDriver failed with error: -24: -24 (ZX_ERR_PEER_CLOSED)
[00392.394476][280027][280562][audio_core] ERROR: [src/media/audio/audio_core/driver_output.cc(166)] OUTPUT UNDERFLOW: Missed mix target by (worst-case, expected) = (49, 99) ms. Cooling down for 1000 milliseconds.
[00392.394513][280027][280562][audio_core] ERROR: [src/media/audio/audio_core/reporter.cc(428)] UNDERFLOW: Failed to obtain the Cobalt logger
[00392.413146][280027][280029][audio_core] ERROR: [src/media/audio/audio_core/ultrasound_renderer.cc(64)] Unsupported method BindGainControl on ultrasound renderer
[00392.423325][280027][280562][audio_core] INFO: [audio_driver_v2.cc(585)] Output shutting down 'Stream channel closed unexpectedly', status:-24
[00392.423387][280027][280562][audio_core] ERROR: [src/media/audio/audio_core/audio_driver_v2.cc(75)] AudioDriver failed with error: -24: -24 (ZX_ERR_PEER_CLOSED)
[00392.423417][280027][280562][audio_core] ERROR: [src/media/audio/audio_core/audio_driver_v2.cc(305)] AudioDriver failed with error: -24: -24 (ZX_ERR_PEER_CLOSED)
[       OK ] UltrasoundTest.RendererDoesNotSupportBindGainControl (151 ms)
[ RUN      ] UltrasoundTest.RendererDoesNotSupportSetReferenceClock
[00392.575423][276880][276883][test-devmgr] INFO:
[00392.575484][276880][276883][test-devmgr] INFO: Running remove task for device 0xc64fcfe910 'Virtual_Audio_Device_(default)'
[00392.575618][276880][276883][test-devmgr] INFO: Removed device 0xc64fcfe910 'Virtual_Audio_Device_(default)': ZX_OK
[00392.575627][276880][276883][test-devmgr] INFO: Removing device 0xc64fcfe910 'Virtual_Audio_Device_(default)' parent=0xc64fcfe610
[00392.546406][280027][280625][audio_core] ERROR: [src/media/audio/audio_core/driver_output.cc(166)] OUTPUT UNDERFLOW: Missed mix target by (worst-case, expected) = (48.99, 98) ms. Cooling down for 1000 milliseconds.
[00392.546445][280027][280625][audio_core] ERROR: [src/media/audio/audio_core/reporter.cc(428)] UNDERFLOW: Failed to obtain the Cobalt logger
[00392.565178][280027][280029][audio_core] ERROR: [src/media/audio/audio_core/ultrasound_renderer.cc(68)] Unsupported method SetReferenceClock on ultrasound renderer
[00392.575361][280027][280625][audio_core] INFO: [audio_driver_v2.cc(585)] Output shutting down 'Stream channel closed unexpectedly', status:-24
[       OK ] UltrasoundTest.RendererDoesNotSupportSetReferenceClock (143 ms)
[ RUN      ] UltrasoundTest.CreateCapturer
[00392.607433][276880][276883][test-devmgr] INFO:
[00392.607488][276880][276883][test-devmgr] INFO: Running remove task for device 0xc64fcfe910 'Virtual_Audio_Device_(default)'
[00392.607609][276880][276883][test-devmgr] INFO: Removed device 0xc64fcfe910 'Virtual_Audio_Device_(default)': ZX_OK
[00392.607620][276880][276883][test-devmgr] INFO: Removing device 0xc64fcfe910 'Virtual_Audio_Device_(default)' parent=0xc64fcfe610
[00392.575406][280027][280625][audio_core] ERROR: [src/media/audio/audio_core/audio_driver_v2.cc(75)] AudioDriver failed with error: -24: -24 (ZX_ERR_PEER_CLOSED)
[00392.575427][280027][280625][audio_core] ERROR: [src/media/audio/audio_core/audio_driver_v2.cc(305)] AudioDriver failed with error: -24: -24 (ZX_ERR_PEER_CLOSED)
[00392.607377][280027][280686][audio_core] INFO: [audio_driver_v2.cc(585)]  Input shutting down 'Stream channel closed unexpectedly', status:-24
[       OK ] UltrasoundTest.CreateCapturer (32 ms)
[ RUN      ] UltrasoundTest.CapturerDoesNotSupportSetPcmStreamType
[00392.649557][276880][276883][test-devmgr] INFO:
[00392.649636][276880][276883][test-devmgr] INFO: Running remove task for device 0xc64fcfe910 'Virtual_Audio_Device_(default)'
[00392.649796][276880][276883][test-devmgr] INFO: Removed device 0xc64fcfe910 'Virtual_Audio_Device_(default)': ZX_OK
[00392.649812][276880][276883][test-devmgr] INFO: Removing device 0xc64fcfe910 'Virtual_Audio_Device_(default)' parent=0xc64fcfe610
[00392.607415][280027][280686][audio_core] ERROR: [src/media/audio/audio_core/audio_driver_v2.cc(75)] AudioDriver failed with error: -24: -24 (ZX_ERR_PEER_CLOSED)
[00392.607436][280027][280686][audio_core] ERROR: [src/media/audio/audio_core/audio_driver_v2.cc(305)] AudioDriver failed with error: -24: -24 (ZX_ERR_PEER_CLOSED)
[00392.639303][280027][280029][audio_core] ERROR: [src/media/audio/audio_core/ultrasound_capturer.cc(61)] Unsupported method SetPcmStreamType on ultrasound capturer
[00392.649486][280027][280755][audio_core] INFO: [audio_driver_v2.cc(585)]  Input shutting down 'Stream channel closed unexpectedly', status:-24
[00392.649540][280027][280755][audio_core] ERROR: [src/media/audio/audio_core/audio_driver_v2.cc(75)] AudioDriver failed with error: -24: -24 (ZX_ERR_PEER_CLOSED)
[00392.649569][280027][280755][audio_core] ERROR: [src/media/audio/audio_core/audio_driver_v2.cc(305)] AudioDriver failed with error: -24: -24 (ZX_ERR_PEER_CLOSED)
[       OK ] UltrasoundTest.CapturerDoesNotSupportSetPcmStreamType (51 ms)
[ RUN      ] UltrasoundTest.CapturerDoesNotSupportSetUsage
[00392.701181][276880][276883][test-devmgr] INFO:
[00392.701258][276880][276883][test-devmgr] INFO: Running remove task for device 0xc64fcfe910 'Virtual_Audio_Device_(default)'
[00392.701417][276880][276883][test-devmgr] INFO: Removed device 0xc64fcfe910 'Virtual_Audio_Device_(default)': ZX_OK
[00392.701431][276880][276883][test-devmgr] INFO: Removing device 0xc64fcfe910 'Virtual_Audio_Device_(default)' parent=0xc64fcfe610
[00392.690860][280027][280029][audio_core] ERROR: [src/media/audio/audio_core/ultrasound_capturer.cc(57)] Unsupported method SetUsage on ultrasound capturer
[00392.701096][280027][280824][audio_core] INFO: [audio_driver_v2.cc(585)]  Input shutting down 'Stream channel closed unexpectedly', status:-24
[00392.701154][280027][280824][audio_core] ERROR: [src/media/audio/audio_core/audio_driver_v2.cc(75)] AudioDriver failed with error: -24: -24 (ZX_ERR_PEER_CLOSED)
[00392.701185][280027][280824][audio_core] ERROR: [src/media/audio/audio_core/audio_driver_v2.cc(305)] AudioDriver failed with error: -24: -24 (ZX_ERR_PEER_CLOSED)
[       OK ] UltrasoundTest.CapturerDoesNotSupportSetUsage (42 ms)
[ RUN      ] UltrasoundTest.CapturerDoesNotSupportBindGainControl
[00392.743724][276880][276883][test-devmgr] INFO:
[00392.743803][276880][276883][test-devmgr] INFO: Running remove task for device 0xc64fcfe910 'Virtual_Audio_Device_(default)'
[00392.743971][276880][276883][test-devmgr] INFO: Removed device 0xc64fcfe910 'Virtual_Audio_Device_(default)': ZX_OK
[00392.743989][276880][276883][test-devmgr] INFO: Removing device 0xc64fcfe910 'Virtual_Audio_Device_(default)' parent=0xc64fcfe610
[00392.733408][280027][280029][audio_core] ERROR: [src/media/audio/audio_core/ultrasound_capturer.cc(66)] Unsupported method BindGainControl on ultrasound capturer
[00392.743640][280027][280891][audio_core] INFO: [audio_driver_v2.cc(585)]  Input shutting down 'Stream channel closed unexpectedly', status:-24
[00392.743708][280027][280891][audio_core] ERROR: [src/media/audio/audio_core/audio_driver_v2.cc(75)] AudioDriver failed with error: -24: -24 (ZX_ERR_PEER_CLOSED)
[00392.743738][280027][280891][audio_core] ERROR: [src/media/audio/audio_core/audio_driver_v2.cc(305)] AudioDriver failed with error: -24: -24 (ZX_ERR_PEER_CLOSED)
[       OK ] UltrasoundTest.CapturerDoesNotSupportBindGainControl (52 ms)
[ RUN      ] UltrasoundTest.CapturerDoesNotSupportSetReferenceClock
[00392.795276][276880][276883][test-devmgr] INFO:
[00392.795333][276880][276883][test-devmgr] INFO: Running remove task for device 0xc64fcfe910 'Virtual_Audio_Device_(default)'
[00392.795496][276880][276883][test-devmgr] INFO: Removed device 0xc64fcfe910 'Virtual_Audio_Device_(default)': ZX_OK
[00392.795530][276880][276883][test-devmgr] INFO: Removing device 0xc64fcfe910 'Virtual_Audio_Device_(default)' parent=0xc64fcfe610
[00392.784991][280027][280029][audio_core] ERROR: [src/media/audio/audio_core/ultrasound_capturer.cc(70)] Unsupported method SetReferenceClock on ultrasound capturer
[00392.795201][280027][280962][audio_core] INFO: [audio_driver_v2.cc(585)]  Input shutting down 'Stream channel closed unexpectedly', status:-24
[       OK ] UltrasoundTest.CapturerDoesNotSupportSetReferenceClock (41 ms)
[00392.795237][280027][280962][audio_core] ERROR: [src/media/audio/audio_core/audio_driver_v2.cc(75)] AudioDriver failed with error: -24: -24 (ZX_ERR_PEER_CLOSED)
[00392.795258][280027][280962][audio_core] ERROR: [src/media/audio/audio_core/audio_driver_v2.cc(305)] AudioDriver failed with error: -24: -24 (ZX_ERR_PEER_CLOSED)
[----------] 10 tests from UltrasoundTest (1733 ms total)
[----------] Global test environment tear-down
[==========] 13 tests from 3 test suites ran. (10934 ms total)
[  PASSED  ] 13 tests.
ok 9 fuchsia-pkg://fuchsia.com/audio_pipeline_tests#meta/audio_pipeline_tests.cm (12.230948553s)
`
	want := []runtests.TestCaseResult{
		{
			DisplayName: "UltrasoundTest.CreateRenderer",
			SuiteName:   "UltrasoundTest",
			CaseName:    "CreateRenderer",
			Duration:    964000000,
			Status:      runtests.TestSuccess,
			Format:      "GoogleTest",
		}, {
			DisplayName: "UltrasoundTest.RendererDoesNotSupportSetPcmStreamType",
			SuiteName:   "UltrasoundTest",
			CaseName:    "RendererDoesNotSupportSetPcmStreamType",
			Duration:    142000000,
			Status:      runtests.TestSuccess,
			Format:      "GoogleTest",
		}, {
			DisplayName: "UltrasoundTest.RendererDoesNotSupportSetUsage",
			SuiteName:   "UltrasoundTest",
			CaseName:    "RendererDoesNotSupportSetUsage",
			Duration:    112000000,
			Status:      runtests.TestSuccess,
			Format:      "GoogleTest",
		}, {
			DisplayName: "UltrasoundTest.RendererDoesNotSupportBindGainControl",
			SuiteName:   "UltrasoundTest",
			CaseName:    "RendererDoesNotSupportBindGainControl",
			Duration:    151000000,
			Status:      runtests.TestSuccess,
			Format:      "GoogleTest",
		}, {
			DisplayName: "UltrasoundTest.RendererDoesNotSupportSetReferenceClock",
			SuiteName:   "UltrasoundTest",
			CaseName:    "RendererDoesNotSupportSetReferenceClock",
			Duration:    143000000,
			Status:      runtests.TestSuccess,
			Format:      "GoogleTest",
		}, {
			DisplayName: "UltrasoundTest.CreateCapturer",
			SuiteName:   "UltrasoundTest",
			CaseName:    "CreateCapturer",
			Duration:    32000000,
			Status:      runtests.TestSuccess,
			Format:      "GoogleTest",
		}, {
			DisplayName: "UltrasoundTest.CapturerDoesNotSupportSetPcmStreamType",
			SuiteName:   "UltrasoundTest",
			CaseName:    "CapturerDoesNotSupportSetPcmStreamType",
			Duration:    51000000,
			Status:      runtests.TestSuccess,
			Format:      "GoogleTest",
		}, {
			DisplayName: "UltrasoundTest.CapturerDoesNotSupportSetUsage",
			SuiteName:   "UltrasoundTest",
			CaseName:    "CapturerDoesNotSupportSetUsage",
			Duration:    42000000,
			Status:      runtests.TestSuccess,
			Format:      "GoogleTest",
		}, {
			DisplayName: "UltrasoundTest.CapturerDoesNotSupportBindGainControl",
			SuiteName:   "UltrasoundTest",
			CaseName:    "CapturerDoesNotSupportBindGainControl",
			Duration:    52000000,
			Status:      runtests.TestSuccess,
			Format:      "GoogleTest",
		}, {
			DisplayName: "UltrasoundTest.CapturerDoesNotSupportSetReferenceClock",
			SuiteName:   "UltrasoundTest",
			CaseName:    "CapturerDoesNotSupportSetReferenceClock",
			Duration:    41000000,
			Status:      runtests.TestSuccess,
			Format:      "GoogleTest",
		},
	}
	testCaseCmp(t, stdout, want)
}

// Regression test for https://fxbug.dev/42129657
func TestFxb52363(t *testing.T) {
	stdout := `
Running test in realm: test_env_25300c08
running 4 tests
test listen_for_klog ... ok
test listen_for_syslog ... ok
test listen_for_klog_routed_stdio ... ok
test test_observer_stop_api ... ok
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
ok 61 fuchsia-pkg://fuchsia.com/archivist_integration_tests#meta/logs_integration_rust_tests.cm (1.04732004s)
`
	want := []runtests.TestCaseResult{
		{
			DisplayName: "listen_for_klog",
			CaseName:    "listen_for_klog",
			Status:      runtests.TestSuccess,
			Format:      "Rust",
		}, {
			DisplayName: "listen_for_syslog",
			CaseName:    "listen_for_syslog",
			Status:      runtests.TestSuccess,
			Format:      "Rust",
		}, {
			DisplayName: "listen_for_klog_routed_stdio",
			CaseName:    "listen_for_klog_routed_stdio",
			Status:      runtests.TestSuccess,
			Format:      "Rust",
		}, {
			DisplayName: "test_observer_stop_api",
			CaseName:    "test_observer_stop_api",
			Status:      runtests.TestSuccess,
			Format:      "Rust",
		},
	}
	testCaseCmp(t, stdout, want)
}

func TestTRFLegacyTest(t *testing.T) {
	stdout := `
Running test 'fuchsia-pkg://fuchsia.com/vkreadback#meta/vkreadback.cm'
[RUNNING]	legacy_test
[stdout - legacy_test]
[==========] Running 5 tests from 1 test suite.
[stdout - legacy_test]
[----------] Global test environment set-up.
[stdout - legacy_test]
[----------] 5 tests from Vulkan
[stdout - legacy_test]
[ RUN      ] Vulkan.Readback
[stdout - legacy_test]
****** Test Failed! 4096 mismatches
[stdout - legacy_test]
../../src/graphics/tests/vkreadback/main.cc:33: Failure
[stdout - legacy_test]
Value of: test.Readback()
[stdout - legacy_test]
	Actual: false
[stdout - legacy_test]
Expected: true
[stdout - legacy_test]
[  FAILED  ] Vulkan.Readback (132 ms)
[stdout - legacy_test]
[ RUN      ] Vulkan.ManyReadback
[stderr - legacy_test]
Clear Color Value Mismatch at index 0 - expected 0xbf8000ff, got 0xabababab
[stderr - legacy_test]
Clear Color Value Mismatch at index 1 - expected 0xbf8000ff, got 0xabababab
[stderr - legacy_test]
Clear Color Value Mismatch at index 2 - expected 0xbf8000ff, got 0xabababab
[stderr - legacy_test]
Clear Color Value Mismatch at index 3 - expected 0xbf8000ff, got 0xabababab
[stdout - legacy_test]
****** Test Failed! 4096 mismatches
[stdout - legacy_test]
../../src/graphics/tests/vkreadback/main.cc:45: Failure
[stdout - legacy_test]
Value of: test->Readback()
[stdout - legacy_test]
  Actual: false
[stdout - legacy_test]
Expected: true
[stdout - legacy_test]
[  FAILED  ] Vulkan.ManyReadback (9078 ms)
[stdout - legacy_test]
[ RUN      ] Vulkan.ReadbackLoopWithFenceWaitThread
[stderr - legacy_test]
Clear Color Value Mismatch at index 0 - expected 0xbf8000ff, got 0xabababab
[stderr - legacy_test]
Clear Color Value Mismatch at index 1 - expected 0xbf8000ff, got 0xabababab
[stdout - legacy_test]
****** Test Failed! 4096 mismatches
[stdout - legacy_test]
../../src/graphics/tests/vkreadback/main.cc:98: Failure
[stdout - legacy_test]
Value of: test.Readback()
[stdout - legacy_test]
  Actual: false
[stdout - legacy_test]
Expected: true
[stdout - legacy_test]
[  FAILED  ] Vulkan.ReadbackLoopWithFenceWaitThread (340 ms)
`
	want := []runtests.TestCaseResult{}
	testCaseCmp(t, stdout, want)
}

func TestParseDartSystemTest(t *testing.T) {
	stdout := `
[----------] Test results JSON:
{
  "bqTableName": "e2etest",
  "bqDatasetName": "e2e_test_data",
  "bqProjectName": "fuchsia-infra",
  "buildID": "8880180380045754528",
  "startTime": "2020-05-16 02:44:33.519488",
  "buildBucketInfo": {
    "user": null,
    "botID": "fuchsia-internal-try-n1-1-ssd0-us-central1-c-37-za5b",
    "builderName": "foo",
    "buildID": "8880180380045754528",
    "changeNumber": null,
    "gcsBucket": "paper-crank-rogue-raft",
    "reason": "",
    "repository": "foo",
    "startTime": "2020-05-16 02:44:33.519488"
  },
  "testGroups": [
    {
      "name": "foo_test/group1",
      "result": "PASSED",
      "startTime": "2020-05-16 03:17:20.987638",
      "loginMode": "NOT_RUN",
      "retries": 0,
      "durationInSeconds": 87,
      "testCases": [
        {
          "name": "test1",
          "result": "PASSED",
          "startTime": "2020-05-16 03:17:25.745931",
          "loginMode": "NOT_RUN",
          "retries": 0,
          "durationInSeconds": 52,
          "customFields": [
            {
              "key": "device_name",
              "value": "paper-crank-rogue-raft"
            },
            {
              "key": "transcript",
              "value": "foo"
            }
          ]
        },
        {
          "name": "test2",
          "result": "FAILED",
          "startTime": "2020-05-16 03:18:18.197664",
          "loginMode": "NOT_RUN",
          "retries": 0,
          "durationInSeconds": 30,
          "customFields": [
            {
              "key": "device_name",
              "value": "paper-crank-rogue-raft"
            },
            {
              "key": "transcript",
              "value": "foo"
            }
          ]
        }
      ]
    },
    {
      "name": "foo_test/group2",
      "result": "PASSED",
      "startTime": "2020-05-16 03:17:18.291768",
      "loginMode": "UNKNOWN",
      "retries": 0,
      "durationInSeconds": 90,
      "testCases": []
    }
  ]
}
`
	want := []runtests.TestCaseResult{
		{
			DisplayName: "foo_test/group1.test1",
			SuiteName:   "foo_test/group1",
			CaseName:    "test1",
			Duration:    52000000000,
			Status:      runtests.TestSuccess,
			Format:      "dart_system_test",
		}, {
			DisplayName: "foo_test/group1.test2",
			SuiteName:   "foo_test/group1",
			CaseName:    "test2",
			Duration:    30000000000,
			Status:      runtests.TestFailure,
			Format:      "dart_system_test",
		},
	}
	testCaseCmp(t, stdout, want)
}

func TestParseVulkanCts(t *testing.T) {
	stdout := `
Writing test log into /data/TestResults.qpa
dEQP Core git-6c86ad6eade572a70482771aa1c4d466fe7106ef (0x6c86ad6e) starting..
  target implementation = 'Fuchsia'
Test case 'dEQP-VK.renderpass.suballocation.multisample.r32g32_uint.samples_8'..
Pass (Pass)
Test case 'dEQP-VK.renderpass.suballocation.multisample.separate_stencil_usage.d32_sfloat_s8_uint.samples_32.test_stencil'..
NotSupported (Image type not supported at vktRenderPassMultisampleTests.cpp:270)
Test case 'dEQP-VK.renderpass.suballocation.multisample.r32g32_uint.samples_9'..
Fail (bad)
Test case 'dEQP-VK.renderpass.suballocation.multisample.r32g32_uint.samples_10'..
`

	want := []runtests.TestCaseResult{
		{
			DisplayName: "dEQP-VK.renderpass.suballocation.multisample.r32g32_uint.samples_8",
			SuiteName:   "dEQP-VK.renderpass.suballocation.multisample.r32g32_uint",
			CaseName:    "samples_8",
			Status:      runtests.TestSuccess,
			Format:      "VulkanCtsTest",
		}, {
			DisplayName: "dEQP-VK.renderpass.suballocation.multisample.separate_stencil_usage.d32_sfloat_s8_uint.samples_32.test_stencil",
			SuiteName:   "dEQP-VK.renderpass.suballocation.multisample.separate_stencil_usage.d32_sfloat_s8_uint.samples_32",
			CaseName:    "test_stencil",
			Status:      runtests.TestSkipped,
			Format:      "VulkanCtsTest",
		}, {
			DisplayName: "dEQP-VK.renderpass.suballocation.multisample.r32g32_uint.samples_9",
			SuiteName:   "dEQP-VK.renderpass.suballocation.multisample.r32g32_uint",
			CaseName:    "samples_9",
			Status:      runtests.TestFailure,
			Format:      "VulkanCtsTest",
		}, {
			DisplayName: "dEQP-VK.renderpass.suballocation.multisample.r32g32_uint.samples_10",
			SuiteName:   "dEQP-VK.renderpass.suballocation.multisample.r32g32_uint",
			CaseName:    "samples_10",
			Status:      runtests.TestFailure,
			Format:      "VulkanCtsTest",
		},
	}
	testCaseCmp(t, stdout, want)
}

func TestParseNetworkConformanceTest(t *testing.T) {
	stdout := `
[network-conformance output] 2022/03/09 18:36:31
[network-conformance output] 2022/03/09 18:36:31 >> SOME-Suite_name-2.1
2022/03/09 18:36:31 [network-conformance case start] NS2--SOME-Suite_name-2.1
[network-conformance output] 2022/03/09 18:36:32 << SOME-Suite_name-2.1: Passed
[network-conformance output] 2022/03/09 18:36:32
2022/03/09 18:36:32 [network-conformance case end] {"identifier":{"platform":"NS2","suite_name":"SOME-Suite_name","major_number":2,"minor_number":1},"expected_outcome":"Passed","actual_outcome":"Passed","duration_millis":1469}
[network-conformance output] 2022/03/09 18:36:32 >> SOME-Suite_name-2.2
2022/03/09 18:36:32 [network-conformance case start] NS2--SOME-Suite_name-2.2
[network-conformance output] 2022/03/09 18:36:37 << SOME-Suite_name-2.2: Passed
2022/03/09 18:36:37 [network-conformance case end] {"identifier":{"platform":"NS2","suite_name":"SOME-Suite_name","major_number":2,"minor_number":2},"expected_outcome":"!FAILED!","actual_outcome":"Passed","duration_millis":5292}
[network-conformance output] 2022/03/09 18:36:37
`

	want := []runtests.TestCaseResult{
		{
			DisplayName: "NS2--SOME-Suite_name-2.1",
			SuiteName:   "SOME-Suite_name",
			CaseName:    "2.1",
			Status:      runtests.TestSuccess,
			Duration:    1469 * time.Millisecond,
			Format:      parseoutput.NetworkConformanceFormatName,
		},
		{
			DisplayName: "NS2--SOME-Suite_name-2.2",
			SuiteName:   "SOME-Suite_name",
			CaseName:    "2.2",
			Status:      runtests.TestFailure,
			Duration:    5292 * time.Millisecond,
			Format:      parseoutput.NetworkConformanceFormatName,
			FailReason:  "actual test outcome Passed does not match expected test outcome !FAILED!",
		},
	}

	testCaseCmp(t, stdout, want)
}

func TestParseMoblyTest(t *testing.T) {
	stdout := `
Running [InfraDriver]
======== Mobly config content ========
MoblyParams:
  LogPath: /tmp
TestBeds:
- Controllers:
    FuchsiaDevice:
    - name: fuchsia-emulator
      transport: fuchsia-controller
  Name: InfraTestbed
  TestParams: {}

======================================

[=====MOBLY RESULTS=====]
---
Requested Tests:
- test_goodbye
- test_hello
- test_skipped
- test_error
Type: TestNameList
---
Begin Time: 1668122321142
Details: null
End Time: 1668122321143
Extra Errors: {}
Extras: null
Result: PASS
Retry Parent: null
Signature: test_goodbye-1668122321142
Stacktrace: null
Termination Signal Type: null
Test Class: GreetingsTest
Test Name: test_goodbye
Type: Record
UID: null
---
Begin Time: 1668122321143
Details: Real test failure
End Time: 1668122321149
Extra Errors: {}
Extras: null
Result: FAIL
Retry Parent: null
Signature: test_hello-1668122321143
Stacktrace: null
Termination Signal Type: TestFailure
Test Class: GreetingsTest
Test Name: test_hello
Type: Record
UID: null
---
Details: null
Extra Errors: {}
Extras: null
Result: SKIP
Retry Parent: null
Signature: test_skipped-1668122321143
Stacktrace: null
Termination Signal Type: null
Test Class: GreetingsTest
Test Name: test_skipped
Type: Record
UID: null
---
Begin Time: 1668122321143
Details: 'Some multi-line error:
    line-1,
    line-2'
End Time: 1668122321149
Extra Errors: {}
Extras: null
Result: ERROR
Retry Parent: null
Signature: test_error-1668122321143
Stacktrace: null
Termination Signal Type: FuchsiaDeviceError
Test Class: GreetingsTest
Test Name: test_error
Type: Record
UID: null
---
Error: 0
Executed: 2
Failed: 0
Passed: 2
Requested: 2
Skipped: 0
Type: Summary

`

	want := []runtests.TestCaseResult{
		{
			DisplayName: "GreetingsTest.test_goodbye",
			FailReason:  "",
			SuiteName:   "GreetingsTest",
			CaseName:    "test_goodbye",
			Status:      runtests.TestSuccess,
			Duration:    1 * time.Millisecond,
			Format:      "Mobly",
		},
		{
			DisplayName: "GreetingsTest.test_hello",
			FailReason:  "[TestFailure] Real test failure",
			SuiteName:   "GreetingsTest",
			CaseName:    "test_hello",
			Status:      runtests.TestFailure,
			Duration:    6 * time.Millisecond,
			Format:      "Mobly",
		},
		{
			DisplayName: "GreetingsTest.test_skipped",
			FailReason:  "",
			SuiteName:   "GreetingsTest",
			CaseName:    "test_skipped",
			Status:      runtests.TestSkipped,
			Duration:    0,
			Format:      "Mobly",
		},
		{
			DisplayName: "GreetingsTest.test_error",
			FailReason:  "[FuchsiaDeviceError] Some multi-line error: line-1, line-2",
			SuiteName:   "GreetingsTest",
			CaseName:    "test_error",
			Status:      runtests.TestCrashed,
			Duration:    6 * time.Millisecond,
			Format:      "Mobly",
		},
	}

	testCaseCmp(t, stdout, want)
}

func TestParseMoblyTestError(t *testing.T) {
	stdout := `
Running [InfraDriver]
======== Mobly config content ========
MoblyParams:
  LogPath: /tmp
TestBeds:
- Controllers:
    FuchsiaDevice:
    - name: fuchsia-emulator
      transport: fuchsia-controller
  Name: InfraTestbed
  TestParams: {}

======================================

[=====MOBLY RESULTS=====]
---
Requested Tests:
- test_goodbye
- test_hello
- test_skipped
- test_error
Type: TestNameList
---
Begin Time: 1668122321142
Details: null
End Time: 1668122321143
Extra Errors: {}
Extras: null
Result: PASS
Retry Parent: null
Signature: test_goodbye-1668122321142
Stacktrace: null
Termination Signal Type: null
Test Class: GreetingsTest
Test Name: test_goodbye
Type: Record
UID: null

`

	want := []runtests.TestCaseResult{
		{
			DisplayName: "GreetingsTest.test_goodbye",
			FailReason:  "",
			SuiteName:   "GreetingsTest",
			CaseName:    "test_goodbye",
			Status:      runtests.TestSuccess,
			Duration:    1 * time.Millisecond,
			Format:      "Mobly",
		},
		{
			DisplayName: "TestparserError",
			FailReason:  "Unexpected number of requested/reported test results [requested: 4, reported: 1]",
			SuiteName:   "Synthetic",
			CaseName:    "Synthetic",
			Status:      runtests.TestAborted,
			Format:      "Mobly",
		},
	}

	testCaseCmp(t, stdout, want)
}
