@@ -6,6 +6,8 @@ use std::collections::HashMap;
66
77use crate :: { error:: Error , rs, Result } ;
88
9+ use remote_settings:: { RemoteSettingsConfig , RemoteSettingsContext , RemoteSettingsService } ;
10+
911/// Remotes settings client for benchmarking
1012///
1113/// This fetches all data in `new`, then implements [rs::Client] by returning the local data.
@@ -20,55 +22,39 @@ pub struct RemoteSettingsBenchmarkClient {
2022impl RemoteSettingsBenchmarkClient {
2123 pub fn new ( ) -> Result < Self > {
2224 let mut new_benchmark_client = Self :: default ( ) ;
23- new_benchmark_client. fetch_data_with_client (
24- remote_settings:: RemoteSettings :: new ( remote_settings:: RemoteSettingsConfig {
25- server : None ,
26- bucket_name : None ,
27- collection_name : rs:: Collection :: Amp . name ( ) . to_owned ( ) ,
28- server_url : None ,
29- } ) ?,
30- rs:: Collection :: Amp ,
31- ) ?;
32- new_benchmark_client. fetch_data_with_client (
33- remote_settings:: RemoteSettings :: new ( remote_settings:: RemoteSettingsConfig {
34- server : None ,
35- bucket_name : None ,
36- collection_name : rs:: Collection :: Other . name ( ) . to_owned ( ) ,
37- server_url : None ,
38- } ) ?,
39- rs:: Collection :: Other ,
40- ) ?;
41- new_benchmark_client. fetch_data_with_client (
42- remote_settings:: RemoteSettings :: new ( remote_settings:: RemoteSettingsConfig {
43- server : None ,
44- bucket_name : None ,
45- collection_name : rs:: Collection :: Fakespot . name ( ) . to_owned ( ) ,
46- server_url : None ,
47- } ) ?,
48- rs:: Collection :: Fakespot ,
49- ) ?;
25+ new_benchmark_client. fetch_data ( rs:: Collection :: Amp ) ?;
26+ new_benchmark_client. fetch_data ( rs:: Collection :: Other ) ?;
27+ new_benchmark_client. fetch_data ( rs:: Collection :: Fakespot ) ?;
5028 Ok ( new_benchmark_client)
5129 }
5230
53- fn fetch_data_with_client (
54- & mut self ,
55- client : remote_settings:: RemoteSettings ,
56- collection : rs:: Collection ,
57- ) -> Result < ( ) > {
58- let response = client. get_records ( ) ?;
59- for r in & response. records {
60- if let Some ( a) = & r. attachment {
61- self . attachments
62- . insert ( a. location . clone ( ) , client. get_attachment ( & a. location ) ?) ;
31+ fn fetch_data ( & mut self , collection : rs:: Collection ) -> Result < ( ) > {
32+ let service = RemoteSettingsService :: new (
33+ String :: from ( ":memory:" ) ,
34+ RemoteSettingsConfig {
35+ server : None ,
36+ bucket_name : None ,
37+ app_context : Some ( RemoteSettingsContext :: default ( ) ) ,
38+ } ,
39+ ) ;
40+ let client = service. make_client ( collection. name ( ) . to_string ( ) ) ;
41+ let records = client. get_records ( true ) ;
42+ if let Some ( records) = records {
43+ for r in & records {
44+ if let Some ( a) = & r. attachment {
45+ self . attachments
46+ . insert ( a. location . clone ( ) , client. get_attachment ( r) ?) ;
47+ }
6348 }
49+ self . records . extend (
50+ records
51+ . into_iter ( )
52+ . filter_map ( |r| rs:: Record :: new ( r, collection) . ok ( ) ) ,
53+ ) ;
54+ Ok ( ( ) )
55+ } else {
56+ Err ( Error :: MissingRecords )
6457 }
65- self . records . extend (
66- response
67- . records
68- . into_iter ( )
69- . filter_map ( |r| rs:: Record :: new ( r, collection) . ok ( ) ) ,
70- ) ;
71- Ok ( ( ) )
7258 }
7359
7460 pub fn attachment_size_by_record_type ( & self ) -> Vec < ( rs:: SuggestRecordType , usize ) > {
0 commit comments