[sl4f][performance] Add a simple e2e test for the sl4f performance facade

TEST=
fx set core.arm64 --with-base=//src/tests/end_to_end/sl4f:test && fx build  && [set environment for Target IP and Key] && fx run-host-tests sl4f_test

Change-Id: I1a3ccc7abbb53d0e30bdf19e77d6a9fa3bd62849
diff --git a/src/tests/end_to_end/sl4f/BUILD.gn b/src/tests/end_to_end/sl4f/BUILD.gn
index 9e3fc65..2042cfe 100644
--- a/src/tests/end_to_end/sl4f/BUILD.gn
+++ b/src/tests/end_to_end/sl4f/BUILD.gn
@@ -9,6 +9,7 @@
   sources = [
     "dump_test.dart",
     "file_facade_test.dart",
+    "performance_test.dart",
   ]
 
   deps = [
diff --git a/src/tests/end_to_end/sl4f/test/performance_test.dart b/src/tests/end_to_end/sl4f/test/performance_test.dart
new file mode 100644
index 0000000..04fd698
--- /dev/null
+++ b/src/tests/end_to_end/sl4f/test/performance_test.dart
@@ -0,0 +1,50 @@
+// Copyright 2019 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.
+
+import 'dart:io';
+
+import 'package:test/test.dart';
+import 'package:sl4f/sl4f.dart' as sl4f;
+
+const _timeout = Duration(seconds: 60);
+
+void main() {
+  sl4f.Sl4f sl4fDriver;
+  sl4f.Dump dump;
+  Directory dumpDir;
+  sl4f.Performance performance;
+
+  setUp(() async {
+    sl4fDriver = sl4f.Sl4f.fromEnvironment();
+    await sl4fDriver.startServer();
+    dumpDir = await Directory.systemTemp.createTemp('temp-dump');
+    dump = sl4f.Dump(dumpDir.path);
+
+    performance = sl4f.Performance(sl4fDriver, dump);
+  });
+
+  tearDown(() async {
+    dumpDir.deleteSync(recursive: true);
+
+    await sl4fDriver.stopServer();
+    sl4fDriver.close();
+  });
+
+  group(sl4f.Sl4f, () {
+    test('trace and download', () async {
+      expect(
+          await performance.trace(
+              duration: Duration(seconds: 2), traceName: 'test-trace'),
+          equals(true));
+
+      await performance.downloadTraceFile('test-trace');
+
+      expect(
+          dumpDir.listSync().map((f) => f.path.split('/').last),
+          unorderedMatches([
+            matches(RegExp(r'-test-trace-trace.json$')),
+          ]));
+    });
+  }, timeout: Timeout(_timeout));
+}