// 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.
[Client=TestRequestTrackerClient]
interface TestRequestTracker {
  // Upload a ServiceStats for tracking.
  RecordStats(uint64 client_id, ServiceStats? stats);
};

// The client-side contract for uploading ServiceStats to TestRequestTracker.
interface TestRequestTrackerClient {
  const uint64 kInvalidId = 0;
  // Handshake to tell the client its global identifier and get the name.
  SetIdAndReturnName(uint64 id) => (string? service_name);
};
