blob: b9dbe0831c013d1a504c46ff0b9b3475f47e5b54 [file] [log] [blame]
// Copyright (c) 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
syntax = "proto2";
package disk_cache_fuzzer;
enum RequestPriority {
THROTTLED = 0;
IDLE = 1;
LOWEST = 2;
LOW = 3;
MEDIUM = 4;
HIGHEST = 5;
}
message FuzzCommands {
enum CacheBackend {
SIMPLE = 0;
IN_MEMORY = 1;
BLOCK = 2;
}
required CacheBackend cache_backend = 5;
enum CacheType {
APP_CACHE = 1;
REMOVED_MEDIA_CACHE = 2;
SHADER_CACHE = 3;
PNACL_CACHE = 4;
GENERATED_BYTE_CODE_CACHE = 5;
DISK_CACHE = 6;
GENERATED_NATIVE_CODE_CACHE = 7;
}
required CacheType cache_type = 4;
optional bool set_mask = 2;
optional SetMaxSize set_max_size = 3;
repeated FuzzCommand fuzz_commands = 1;
required bool simple_cache_wait_for_index = 6;
}
message FuzzCommand {
oneof fuzz_command_oneof {
SetMaxSize set_max_size = 87;
CreateEntry create_entry = 1;
OpenEntry open_entry = 2;
OpenOrCreateEntry open_or_create_entry = 345;
CloseEntry close_entry = 3;
DoomEntry doom_entry = 4;
WriteData write_data = 5;
WriteSparseData write_sparse_data = 6;
DoomAllEntries doom_all_entries = 7;
FlushQueueForTest flush_queue_for_test = 8;
CreateIterator create_iterator = 10;
IteratorOpenNextEntry iterator_open_next_entry = 63;
FastForwardBy fast_forward_by = 11;
ReadData read_data = 12;
ReadSparseData read_sparse_data = 456;
DoomEntriesSince doom_entries_since = 13;
DoomEntriesBetween doom_entries_between = 14;
OnExternalCacheHit on_external_cache_hit = 16;
TrimForTest trim_for_test = 17;
TrimDeletedListForTest trim_deleted_list_for_test = 18;
GetAvailableRange get_available_range = 19;
CancelSparseIO cancel_sparse_io = 20;
DoomKey doom_key = 21;
DestructBackend destruct_backend = 22;
AddRealDelay add_real_delay = 23;
// Not included: GetStats, CalculateSizesOf, GetEntryInMemoryData,
// SetEntryInMemoryData, CouldBeSparse, ReadyForSparseIO
// TODO(mpdenton) enable kPrioritizedSimpleCacheTasks?
// TODO(mpdenton) FlushWorkerPoolForTesting
}
}
message SetMaxSize {
required uint32 size = 1;
}
message CreateEntry {
required uint64 key_id = 1;
required uint64 entry_id = 2;
required RequestPriority pri = 3;
required bool async = 4;
required bool is_sparse = 5;
}
message OpenEntry {
required uint64 key_id = 1;
required uint64 entry_id = 2;
required RequestPriority pri = 3;
required bool async = 4;
}
message OpenOrCreateEntry {
required uint64 key_id = 1;
required uint64 entry_id = 2;
required bool create_new = 3;
required RequestPriority pri = 4;
required bool async = 5;
required bool is_sparse = 6;
}
message CloseEntry {
required uint64 entry_id = 1;
}
message DoomEntry {
required uint64 entry_id = 1;
}
message WriteData {
required uint64 entry_id = 1;
required uint32 size = 2;
required uint32 index = 3;
required uint32 offset = 4;
required bool truncate = 5;
required bool async = 6;
}
message WriteSparseData {
required uint64 entry_id = 1;
required uint32 size = 2;
required uint64 offset = 4;
required bool async = 5;
required bool cap_offset = 6;
}
message ReadSparseData {
required uint64 entry_id = 1;
required uint32 size = 2;
required uint64 offset = 4;
required bool async = 5;
required bool cap_offset = 6;
}
message ReadData {
required uint64 entry_id = 1;
required uint32 size = 2;
required uint32 index = 3;
required uint32 offset = 4;
required bool async = 5;
}
message DoomAllEntries {
required bool async = 1;
}
message FlushQueueForTest {}
message CreateIterator {
required uint64 it_id = 1;
}
message IteratorOpenNextEntry {
required uint64 it_id = 1;
required uint64 entry_id = 2;
required bool async = 3;
}
message FastForwardBy {
required uint32 capped_num_millis = 1;
required uint64 time_id = 2;
}
message DoomEntriesBetween {
required uint64 time_id1 = 1;
required uint64 time_id2 = 2;
required bool async = 3;
}
message DoomEntriesSince {
required uint64 time_id = 1;
required bool async = 2;
}
message OnExternalCacheHit {
required uint64 key_id = 1;
}
message TrimForTest {
required bool empty = 1;
}
message TrimDeletedListForTest {
required bool empty = 1;
}
message GetAvailableRange {
required uint64 entry_id = 1;
required uint32 offset = 2;
required uint32 len = 3;
required bool async = 4;
}
message CancelSparseIO {
required uint64 entry_id = 1;
}
message DoomKey {
required uint64 key_id = 1;
required RequestPriority pri = 2;
required bool async = 3;
}
message DestructBackend {
// I want this to be uncommon, so if either of these booleans are false, we
// won't actually destruct the backend.
required bool actually_destruct1 = 1;
required bool actually_destruct2 = 2;
}
message AddRealDelay {
required bool actually_delay = 1;
}