Home | History | Annotate | Download | only in test_service
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 module mojo.test {
      6 
      7 // Various counters that services can periodically send to a
      8 // TestTrackedRequestService for recording.
      9 struct ServiceStats {
     10   uint64 num_new_requests;
     11   double health;
     12 };
     13 
     14 // A per-service summary of all the ServiceStats the
     15 // TestTrackedRequestService has observed.
     16 struct ServiceReport {
     17   string? service_name;
     18   uint64 total_requests;
     19   double mean_health;
     20 };
     21 
     22 // A simple interface to obtain a "report" from all services that have
     23 // opted to connect themselves to for request tracking.
     24 interface TestTrackedRequestService {
     25   GetReport() => (ServiceReport?[]? report);
     26 };
     27 
     28 // TestRequestTracker records ServiceStats for an individual service
     29 // connection for aggregation in a TestTrackedRequestService.
     30 [Client=TestRequestTrackerClient]
     31 interface TestRequestTracker {
     32   // Upload a ServiceStats for tracking.
     33   RecordStats(uint64 client_id, ServiceStats? stats);
     34 };
     35 
     36 // The client-side contract for uploading ServiceStats to TestRequestTracker.
     37 interface TestRequestTrackerClient {
     38   const uint64 kInvalidId = 0;
     39   // Handshake to tell the client its global identifier and get the name.
     40   SetIdAndReturnName(uint64 id) => (string? service_name);
     41 };
     42 
     43 }  // module mojo.test
     44