chromium/net/disk_cache/disk_cache_fuzzer.proto

// Copyright 2019 The Chromium Authors
// 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) 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;
}