// 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.
interface TestTrackedRequestService {
  GetReport() => (array<ServiceReport?>? report);
};

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