@VisibleForTesting public CassandraBlobsDAO(Session session) { this(session, CassandraConfiguration.DEFAULT_CONFIGURATION, new HashBlobId.Factory()); }
default BlobId randomId() { return from(UUID.randomUUID().toString()); } }
@Test default void readBytesShouldThrowWhenNoExisting() { assertThatThrownBy(() -> testee().readBytes(blobIdFactory().from("unknown")).join()) .hasCauseInstanceOf(ObjectStoreException.class); }
@Test default void saveShouldReturnBlobId() { BlobId blobId = testee().save(SHORT_BYTEARRAY).join(); assertThat(blobId).isEqualTo(blobIdFactory().from("31f7a65e315586ac198bd798b6629ce4903d0899476d5741a9f32e2e521b6a66")); }
@Test default void readShouldThrowWhenNoExistingStream() { assertThatThrownBy(() -> testee().read(blobIdFactory().from("unknown"))) .isInstanceOf(ObjectStoreException.class); }
@BeforeEach void setUp(CassandraCluster cassandra) { testee = new MetricableBlobStore( metricsTestExtension.getMetricFactory(), new CassandraBlobsDAO(cassandra.getConf(), CassandraConfiguration.builder() .blobPartSize(CHUNK_SIZE) .build(), new HashBlobId.Factory())); }
@Test public void forPayloadShouldHashEmptyArray() { BlobId blobId = BLOB_ID_FACTORY.forPayload(new byte[0]); assertThat(blobId.asString()).isEqualTo("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"); }
@Override public CompletableFuture<byte[]> readBytes(BlobId blobId) { return metricFactory .runPublishingTimerMetric(READ_BYTES_TIMER_NAME, blobStoreImpl.readBytes(blobId)); }
@Override public CompletableFuture<BlobId> save(InputStream data) { return metricFactory .runPublishingTimerMetric(SAVE_INPUT_STREAM_TIMER_NAME, blobStoreImpl.save(data)); }
@BeforeEach void setUp() { blobStore = new MetricableBlobStore(metricsTestExtension.getMetricFactory(), new MemoryBlobStore(BLOB_ID_FACTORY)); }
@Override public InputStream read(BlobId blobId) { return metricFactory .runPublishingTimerMetric(READ_TIMER_NAME, () -> blobStoreImpl.read(blobId)); } }
@Override public BlobId from(String id) { return new TestBlobId(id); } }
@Override public void beforeEach(ExtensionContext extensionContext) { this.metricFactory = spy(MetricFactory.class); this.saveBytesTimeMetric = spy(TimeMetric.class); this.saveInputStreamTimeMetric = spy(TimeMetric.class); this.readBytesTimeMetric = spy(TimeMetric.class); this.readTimeMetric = spy(TimeMetric.class); setupExpectations(); }
@Override public BlobId.Factory blobIdFactory() { return new HashBlobId.Factory(); }
@Override public CompletableFuture<BlobId> save(byte[] data) { return metricFactory .runPublishingTimerMetric(SAVE_BYTES_TIMER_NAME, blobStoreImpl.save(data)); }
@Override public BlobId.Factory blobIdFactory() { return new HashBlobId.Factory(); }
@Override public BlobId.Factory blobIdFactory() { return new HashBlobId.Factory(); }