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 SetMaxSize set_max_size = 87; 46 CreateEntry create_entry = 1; 47 OpenEntry open_entry = 2; 48 OpenOrCreateEntry open_or_create_entry = 345; 49 CloseEntry close_entry = 3; 50 DoomEntry doom_entry = 4; 51 WriteData write_data = 5; 52 WriteSparseData write_sparse_data = 6; 53 DoomAllEntries doom_all_entries = 7; 54 FlushQueueForTest flush_queue_for_test = 8; 55 CreateIterator create_iterator = 10; 56 IteratorOpenNextEntry iterator_open_next_entry = 63; 57 FastForwardBy fast_forward_by = 11; 58 59 ReadData read_data = 12; 60 ReadSparseData read_sparse_data = 456; 61 62 DoomEntriesSince doom_entries_since = 13; 63 DoomEntriesBetween doom_entries_between = 14; 64 65 OnExternalCacheHit on_external_cache_hit = 16; 66 67 TrimForTest trim_for_test = 17; 68 TrimDeletedListForTest trim_deleted_list_for_test = 18; 69 GetAvailableRange get_available_range = 19; 70 CancelSparseIO cancel_sparse_io = 20; 71 DoomKey doom_key = 21; 72 DestructBackend destruct_backend = 22; 73 74 AddRealDelay add_real_delay = 23; 75 76 // Not included: GetStats, CalculateSizesOf, GetEntryInMemoryData, 77 // SetEntryInMemoryData, CouldBeSparse, ReadyForSparseIO 78 79 // TODO(mpdenton) FlushWorkerPoolForTesting 80 } 81} 82 83message SetMaxSize { 84 required uint32 size = 1; 85} 86 87message CreateEntry { 88 required uint64 key_id = 1; 89 required uint64 entry_id = 2; 90 required RequestPriority pri = 3; 91 required bool async = 4; 92 required bool is_sparse = 5; 93} 94 95message OpenEntry { 96 required uint64 key_id = 1; 97 required uint64 entry_id = 2; 98 required RequestPriority pri = 3; 99 required bool async = 4; 100} 101 102message OpenOrCreateEntry { 103 required uint64 key_id = 1; 104 required uint64 entry_id = 2; 105 required bool create_new = 3; 106 required RequestPriority pri = 4; 107 required bool async = 5; 108 required bool is_sparse = 6; 109} 110 111message CloseEntry { 112 required uint64 entry_id = 1; 113} 114 115message DoomEntry { 116 required uint64 entry_id = 1; 117} 118 119message WriteData { 120 required uint64 entry_id = 1; 121 required uint32 size = 2; 122 required uint32 index = 3; 123 required uint32 offset = 4; 124 required bool truncate = 5; 125 required bool async = 6; 126} 127 128message WriteSparseData { 129 required uint64 entry_id = 1; 130 required uint32 size = 2; 131 required uint64 offset = 4; 132 required bool async = 5; 133 required bool cap_offset = 6; 134} 135 136message ReadSparseData { 137 required uint64 entry_id = 1; 138 required uint32 size = 2; 139 required uint64 offset = 4; 140 required bool async = 5; 141 required bool cap_offset = 6; 142} 143 144message ReadData { 145 required uint64 entry_id = 1; 146 required uint32 size = 2; 147 required uint32 index = 3; 148 required uint32 offset = 4; 149 required bool async = 5; 150} 151 152message DoomAllEntries { 153 required bool async = 1; 154} 155 156message FlushQueueForTest {} 157 158message CreateIterator { 159 required uint64 it_id = 1; 160} 161 162message IteratorOpenNextEntry { 163 required uint64 it_id = 1; 164 required uint64 entry_id = 2; 165 required bool async = 3; 166} 167 168message FastForwardBy { 169 required uint32 capped_num_millis = 1; 170 required uint64 time_id = 2; 171} 172 173message DoomEntriesBetween { 174 required uint64 time_id1 = 1; 175 required uint64 time_id2 = 2; 176 required bool async = 3; 177} 178 179message DoomEntriesSince { 180 required uint64 time_id = 1; 181 required bool async = 2; 182} 183 184message OnExternalCacheHit { 185 required uint64 key_id = 1; 186} 187 188message TrimForTest { 189 required bool empty = 1; 190} 191 192message TrimDeletedListForTest { 193 required bool empty = 1; 194} 195 196message GetAvailableRange { 197 required uint64 entry_id = 1; 198 required uint32 offset = 2; 199 required uint32 len = 3; 200 required bool async = 4; 201} 202 203message CancelSparseIO { 204 required uint64 entry_id = 1; 205} 206 207message DoomKey { 208 required uint64 key_id = 1; 209 required RequestPriority pri = 2; 210 required bool async = 3; 211} 212 213message DestructBackend { 214 // I want this to be uncommon, so if either of these booleans are false, we 215 // won't actually destruct the backend. 216 required bool actually_destruct1 = 1; 217 required bool actually_destruct2 = 2; 218} 219 220message AddRealDelay { 221 required bool actually_delay = 1; 222} 223