Zu Testzwecken möchte ich Cloud Storage nachspielen, weil es Tests verlangsamt.Gibt es einen Google Cloud Storage-Emulator?
Gibt es einen Google Cloud Storage-Emulator?
Zu Testzwecken möchte ich Cloud Storage nachspielen, weil es Tests verlangsamt.Gibt es einen Google Cloud Storage-Emulator?
Gibt es einen Google Cloud Storage-Emulator?
Es gibt derzeit keinen offiziellen Emulator von Google.
Ich verwende derzeit das Projekt Minio (https://www.minio.io/), um das Verhalten von Google Storage in der Entwicklung zu verspotten (Minio verwendet das Dateisystem als Speicher-Backend und bietet Kompatibilität mit S3 apiV2, das mit Google Storage kompatibel ist).
Google hat eine in-memory emulator, die Sie verwenden können (die meisten Kernfunktionen sind implementiert).
Sie benötigen com.google.cloud:google-cloud-nio
auf Ihrem Test Classpath (:0.25.0-alpha
derzeit). Dann können Sie die Storage
Schnittstelle verwenden, die durch den In-Memory-Test-Helferdienst LocalStorageHelper
implementiert wird.
Beispiel Nutzung:
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.contrib.nio.testing.LocalStorageHelper;
@Test
public void exampleInMemoryGoogleStorageTest() {
Storage storage = LocalStorageHelper.getOptions().getService();
final String blobPath = "test/path/foo.txt";
final String testBucketName = "test-bucket";
BlobInfo blobInfo = BlobInfo.newBuilder(
BlobId.of(testBucketName, blobPath)
).build();
storage.create(blobInfo, "randomContent".getBytes(StandardCharsets.UTF_8));
Iterable<Blob> allBlobsIter = storage.list(testBucketName).getValues();
// expect to find the blob we saved when iterating over bucket blobs
assertTrue(
StreamSupport.stream(allBlobsIter.spliterator(), false)
.map(BlobInfo::getName)
.anyMatch(blobPath::equals)
);
}