blob: 85f1b40d4a27dd2e371fa3c7dca4b34f376deaef [file] [log] [blame]
// 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:convert';
import 'dart:io';
import 'package:sl4f/sl4f.dart';
import 'package:test/test.dart';
void main(List<String> args) {
HttpServer fakeServer;
Sl4f sl4f;
setUp(() async {
fakeServer = await HttpServer.bind('127.0.0.1', 18080);
sl4f = Sl4f('127.0.0.1', null, 18080);
});
tearDown(() async {
await fakeServer.close();
});
test('snapshot inspect', () async {
final selectors = ['test.cmx:root', 'other.cmx:root/node:prop'];
final expectedHierarchies = [
{
'moniker': 'test.cmx',
'version': 1,
'data_source': 'Inspect',
'payload': {
'root': {'a': 1}
},
'metadata': {
'timestamp': 123456,
'errors': null,
'filename': 'test_file_plz_ignore.inspect'
}
},
{
'moniker': 'other.cmx',
'version': 1,
'data_source': 'Inspect',
'payload': {
'root': {'prop': 2}
},
'metadata': {
'timestamp': 123456,
'errors': null,
'filename': 'test_file_plz_ignore.inspect'
}
}
];
void handler(HttpRequest req) async {
expect(req.contentLength, greaterThan(0));
final body = jsonDecode(await utf8.decoder.bind(req).join());
expect(body['method'], 'diagnostics_facade.SnapshotInspect');
expect(body['params']['selectors'], selectors);
expect(body['params']['service_name'],
'fuchsia.diagnostics.ArchiveAccessor');
req.response.write(jsonEncode({
'id': body['id'],
'result': expectedHierarchies,
'error': null,
}));
await req.response.close();
}
fakeServer.listen(handler);
final result = await Inspect(sl4f).snapshot(selectors);
expect(result, equals(expectedHierarchies));
});
test('snapshot inspect all', () async {
final expectedHierarchies = [
{
'moniker': 'test.cmx',
'version': 1,
'data_source': 'Inspect',
'payload': {
'root': {'a': 1}
},
'metadata': {
'timestamp': 123456,
'errors': null,
'filename': 'test_file_plz_ignore.inspect'
}
},
{
'moniker': 'other.cmx',
'version': 1,
'data_source': 'Inspect',
'payload': {
'root': {'prop': 2}
},
'metadata': {
'timestamp': 123456,
'errors': null,
'filename': 'test_file_plz_ignore.inspect'
}
}
];
void handler(HttpRequest req) async {
expect(req.contentLength, greaterThan(0));
final body = jsonDecode(await utf8.decoder.bind(req).join());
expect(body['method'], 'diagnostics_facade.SnapshotInspect');
expect(body['params']['selectors'], []);
expect(body['params']['service_name'],
'fuchsia.diagnostics.FeedbackArchiveAccessor');
req.response.write(jsonEncode({
'id': body['id'],
'result': expectedHierarchies,
'error': null,
}));
await req.response.close();
}
fakeServer.listen(handler);
final result =
await Inspect(sl4f).snapshotAll(pipeline: InspectPipeline.feedback);
expect(result, equals(expectedHierarchies));
});
test('snapshot inspect root', () async {
final resultHierarchies = [
{
'moniker': 'test.cmx',
'version': 1,
'data_source': 'Inspect',
'payload': {
'root': {'a': 1}
},
'metadata': {
'timestamp': 123456,
'errors': null,
'filename': 'test_file_plz_ignore.inspect'
}
},
{
'moniker': 'other.cmx',
'version': 1,
'data_source': 'Inspect',
'payload': {
'root': {'prop': 2}
},
'metadata': {
'timestamp': 123456,
'errors': null,
'filename': 'test_file_plz_ignore.inspect'
}
}
];
void handler(HttpRequest req) async {
expect(req.contentLength, greaterThan(0));
final body = jsonDecode(await utf8.decoder.bind(req).join());
expect(body['method'], 'diagnostics_facade.SnapshotInspect');
expect(body['params']['selectors'], ['test.cmx:root']);
req.response.write(jsonEncode({
'id': body['id'],
'result': resultHierarchies,
'error': null,
}));
await req.response.close();
}
fakeServer.listen(handler);
final result = await Inspect(sl4f).snapshotRoot('test.cmx');
expect(result, equals({'a': 1}));
});
test('snapshot inspect root no hierarchy', () async {
const resultHierarchies = [];
void handler(HttpRequest req) async {
expect(req.contentLength, greaterThan(0));
final body = jsonDecode(await utf8.decoder.bind(req).join());
expect(body['method'], 'diagnostics_facade.SnapshotInspect');
expect(body['params']['selectors'], ['test.cmx:root']);
req.response.write(jsonEncode({
'id': body['id'],
'result': resultHierarchies,
'error': null,
}));
await req.response.close();
}
fakeServer.listen(handler);
final result = await Inspect(sl4f).snapshotRoot('test.cmx');
expect(result, isNull);
});
test('snapshot inspect root no payload', () async {
final resultHierarchies = [
{
'moniker': 'test.cmx',
'version': 1,
'data_source': 'Inspect',
'payload': null,
'metadata': {
'timestamp': 123456,
'errors': null,
'filename': 'test_file_plz_ignore.inspect'
}
},
{
'moniker': 'other.cmx',
'version': 1,
'data_source': 'Inspect',
'payload': null,
'metadata': {
'timestamp': 123456,
'errors': null,
'filename': 'test_file_plz_ignore.inspect'
}
}
];
void handler(HttpRequest req) async {
expect(req.contentLength, greaterThan(0));
final body = jsonDecode(await utf8.decoder.bind(req).join());
expect(body['method'], 'diagnostics_facade.SnapshotInspect');
expect(body['params']['selectors'], ['test.cmx:root']);
req.response.write(jsonEncode({
'id': body['id'],
'result': resultHierarchies,
'error': null,
}));
await req.response.close();
}
fakeServer.listen(handler);
final result = await Inspect(sl4f).snapshotRoot('test.cmx');
expect(result, isNull);
});
}