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

module mojo.test;

// Various counters that services can periodically send to a
// TestTrackedRequestService for recording.
struct ServiceStats {
  uint64 num_new_requests;
  double health;
};

// A per-service summary of all the ServiceStats the
// TestTrackedRequestService has observed.
struct ServiceReport {
  string? service_name;
  uint64 total_requests;
  double mean_health;
};

// A simple interface to obtain a "report" from all services that have
// opted to connect themselves to for request tracking.
[ServiceName="mojo::test::TestTrackedRequestService"]
interface TestTrackedRequestService {
  GetReport() => (array<ServiceReport?>? report);
};

// TestRequestTracker records ServiceStats for an individual service
// connection for aggregation in a TestTrackedRequestService.
[ServiceName="mojo::test::TestRequestTracker"]
interface TestRequestTracker {
  SetNameAndReturnId(string service_name) => (uint64 id);
  // Upload a ServiceStats for tracking.
  RecordStats(uint64 client_id, ServiceStats? stats);
};
