| initRepository() |   | 2% |   | 12% | 4 | 5 | 37 | 39 | 0 | 1 |
| getSnapshotInfo(String, String) |   | 37% |   | 42% | 6 | 8 | 36 | 58 | 0 | 1 |
| getBrokerAddress(Long, Env, List) |   | 13% |   | 12% | 4 | 5 | 23 | 25 | 0 | 1 |
| download(String, String) |   | 53% |   | 50% | 6 | 7 | 13 | 35 | 0 | 1 |
| getSnapshotMetaFile(String, List, int) |  | 0% |  | 0% | 2 | 2 | 17 | 17 | 1 | 1 |
| upload(String, String) |   | 53% |   | 37% | 4 | 5 | 13 | 32 | 0 | 1 |
| getSnapshotInfoFile(String, String, List) |  | 0% |  | 0% | 2 | 2 | 13 | 13 | 1 | 1 |
| ping() |   | 50% |   | 66% | 1 | 4 | 10 | 21 | 0 | 1 |
| gsonPostProcess() |   | 79% |   | 83% | 3 | 10 | 9 | 49 | 0 | 1 |
| getCreateStatement() |   | 76% |   | 50% | 4 | 6 | 6 | 27 | 0 | 1 |
| acquireSpiFs() |   | 71% |   | 62% | 3 | 5 | 5 | 17 | 0 | 1 |
| getSnapshotInfos(String, String) |   | 67% |   | 66% | 2 | 4 | 4 | 15 | 0 | 1 |
| assembleRepoInfoFilePath() |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| Repository(long, String, boolean, String, StorageAdapter) |   | 74% |   | 83% | 1 | 4 | 5 | 18 | 0 | 1 |
| getRepoTabletPathBySnapshotInfo(String, SnapshotInfo) |   | 89% | | n/a | 0 | 1 | 3 | 11 | 0 | 1 |
| getRepoPath(String, String) |   | 81% | | n/a | 0 | 1 | 3 | 7 | 0 | 1 |
| allocLocalFileSuffix() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| releaseSpiFs(FileSystem) |   | 53% |   | 50% | 1 | 2 | 2 | 6 | 0 | 1 |
| read(DataInput) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getInfo() |   | 93% |   | 60% | 4 | 6 | 0 | 14 | 0 | 1 |
| assembleRemoteSnapshotPath(String, SnapshotInfo) |   | 94% |   | 50% | 1 | 2 | 1 | 12 | 0 | 1 |
| decodeFileNameWithChecksum(String) |   | 87% |   | 50% | 2 | 3 | 2 | 8 | 0 | 1 |
| listFilesWithGlob(FileSystem, String) |   | 81% |   | 50% | 1 | 2 | 2 | 6 | 0 | 1 |
| getLocation() |   | 66% |   | 50% | 1 | 2 | 0 | 1 | 0 | 1 |
| isRegisteredBroker(String) |   | 90% |   | 62% | 3 | 5 | 1 | 4 | 0 | 1 |
| prepareSnapshotInfo() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| listSnapshots(List) |  | 99% |   | 75% | 3 | 7 | 0 | 31 | 0 | 1 |
| assembleJobInfoFilePath(String, long) |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| assembleMetaInfoFilePath(String) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| spiUploadFile(FileSystem, String, String) |  | 100% | | n/a | 0 | 1 | 0 | 5 | 0 | 1 |
| copyStream(InputStream, OutputStream) |  | 100% |  | 100% | 0 | 2 | 0 | 4 | 0 | 1 |
| jobInfoFileNameWithTimestamp(long) |  | 100% |  | 100% | 0 | 2 | 0 | 4 | 0 | 1 |
| replaceFileNameWithChecksumFileName(String, String) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| hasFileSystemDescriptor() |  | 100% |  | 100% | 0 | 2 | 0 | 1 | 0 | 1 |
| write(DataOutput) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| lambda$isStorageTypeName$0(StorageRegistry.Provider) |  | 100% |  | 100% | 0 | 2 | 0 | 1 | 0 | 1 |
| isStorageTypeName(String) |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| disjoinPrefix(String, String) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| joinPrefix(String, Object) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| assembleFileNameWithSuffix(String, String) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| static {...} |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getFileSystemDescriptor() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getUnavailableReason() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getId() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getName() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| isReadOnly() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getErrorMsg() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getCreateTime() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |