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