• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2019 The Chromium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5syntax = "proto2";
6
7package disk_cache_fuzzer;
8
9enum RequestPriority {
10  THROTTLED = 0;
11  IDLE = 1;
12  LOWEST = 2;
13  LOW = 3;
14  MEDIUM = 4;
15  HIGHEST = 5;
16}
17
18message FuzzCommands {
19  enum CacheBackend {
20    SIMPLE = 0;
21    IN_MEMORY = 1;
22    BLOCK = 2;
23  }
24  required CacheBackend cache_backend = 5;
25
26  enum CacheType {
27    APP_CACHE = 1;
28    REMOVED_MEDIA_CACHE = 2;
29    SHADER_CACHE = 3;
30    PNACL_CACHE = 4;
31    GENERATED_BYTE_CODE_CACHE = 5;
32    DISK_CACHE = 6;
33    GENERATED_NATIVE_CODE_CACHE = 7;
34  }
35  required CacheType cache_type = 4;
36
37  optional bool set_mask = 2;
38  optional SetMaxSize set_max_size = 3;
39  repeated FuzzCommand fuzz_commands = 1;
40  required bool simple_cache_wait_for_index = 6;
41}
42
43message FuzzCommand {
44  oneof fuzz_command_oneof {
45    CreateEntry create_entry = 1;
46    OpenEntry open_entry = 2;
47    OpenOrCreateEntry open_or_create_entry = 345;
48    CloseEntry close_entry = 3;
49    DoomEntry doom_entry = 4;
50    WriteData write_data = 5;
51    WriteSparseData write_sparse_data = 6;
52    DoomAllEntries doom_all_entries = 7;
53    FlushQueueForTest flush_queue_for_test = 8;
54    CreateIterator create_iterator = 10;
55    IteratorOpenNextEntry iterator_open_next_entry = 63;
56    FastForwardBy fast_forward_by = 11;
57
58    ReadData read_data = 12;
59    ReadSparseData read_sparse_data = 456;
60
61    DoomEntriesSince doom_entries_since = 13;
62    DoomEntriesBetween doom_entries_between = 14;
63
64    OnExternalCacheHit on_external_cache_hit = 16;
65
66    TrimForTest trim_for_test = 17;
67    TrimDeletedListForTest trim_deleted_list_for_test = 18;
68    GetAvailableRange get_available_range = 19;
69    CancelSparseIO cancel_sparse_io = 20;
70    DoomKey doom_key = 21;
71    DestructBackend destruct_backend = 22;
72
73    AddRealDelay add_real_delay = 23;
74    SetMaxSize recreate_with_size = 24;
75
76    // Not included: GetStats, CalculateSizesOf, GetEntryInMemoryData,
77    // SetEntryInMemoryData, CouldBeSparse, ReadyForSparseIO
78
79    // TODO(mpdenton) FlushWorkerPoolForTesting
80  }
81
82  reserved 87;  // previously set_max_size member of the oneof.
83}
84
85message SetMaxSize {
86  required uint32 size = 1;
87}
88
89message CreateEntry {
90  required uint64 key_id = 1;
91  required uint64 entry_id = 2;
92  required RequestPriority pri = 3;
93  required bool async = 4;
94  required bool is_sparse = 5;
95}
96
97message OpenEntry {
98  required uint64 key_id = 1;
99  required uint64 entry_id = 2;
100  required RequestPriority pri = 3;
101  required bool async = 4;
102}
103
104message OpenOrCreateEntry {
105  required uint64 key_id = 1;
106  required uint64 entry_id = 2;
107  required bool create_new = 3;
108  required RequestPriority pri = 4;
109  required bool async = 5;
110  required bool is_sparse = 6;
111}
112
113message CloseEntry {
114  required uint64 entry_id = 1;
115}
116
117message DoomEntry {
118  required uint64 entry_id = 1;
119}
120
121message WriteData {
122  required uint64 entry_id = 1;
123  required uint32 size = 2;
124  required uint32 index = 3;
125  required uint32 offset = 4;
126  required bool truncate = 5;
127  required bool async = 6;
128}
129
130message WriteSparseData {
131  required uint64 entry_id = 1;
132  required uint32 size = 2;
133  required uint64 offset = 4;
134  required bool async = 5;
135  required bool cap_offset = 6;
136}
137
138message ReadSparseData {
139  required uint64 entry_id = 1;
140  required uint32 size = 2;
141  required uint64 offset = 4;
142  required bool async = 5;
143  required bool cap_offset = 6;
144}
145
146message ReadData {
147  required uint64 entry_id = 1;
148  required uint32 size = 2;
149  required uint32 index = 3;
150  required uint32 offset = 4;
151  required bool async = 5;
152}
153
154message DoomAllEntries {
155  required bool async = 1;
156}
157
158message FlushQueueForTest {}
159
160message CreateIterator {
161  required uint64 it_id = 1;
162}
163
164message IteratorOpenNextEntry {
165  required uint64 it_id = 1;
166  required uint64 entry_id = 2;
167  required bool async = 3;
168}
169
170message FastForwardBy {
171  required uint32 capped_num_millis = 1;
172  required uint64 time_id = 2;
173}
174
175message DoomEntriesBetween {
176  required uint64 time_id1 = 1;
177  required uint64 time_id2 = 2;
178  required bool async = 3;
179}
180
181message DoomEntriesSince {
182  required uint64 time_id = 1;
183  required bool async = 2;
184}
185
186message OnExternalCacheHit {
187  required uint64 key_id = 1;
188}
189
190message TrimForTest {
191  required bool empty = 1;
192}
193
194message TrimDeletedListForTest {
195  required bool empty = 1;
196}
197
198message GetAvailableRange {
199  required uint64 entry_id = 1;
200  required uint32 offset = 2;
201  required uint32 len = 3;
202  required bool async = 4;
203}
204
205message CancelSparseIO {
206  required uint64 entry_id = 1;
207}
208
209message DoomKey {
210  required uint64 key_id = 1;
211  required RequestPriority pri = 2;
212  required bool async = 3;
213}
214
215message DestructBackend {
216  // I want this to be uncommon, so if either of these booleans are false, we
217  // won't actually destruct the backend.
218  required bool actually_destruct1 = 1;
219  required bool actually_destruct2 = 2;
220}
221
222message AddRealDelay {
223  required bool actually_delay = 1;
224}
225