protected void addDeliveryFuture(BucketInfo info, RecordFuture future) { synchronized (deliveryFuturesMap) { List<RecordFuture> deliveryFutures = deliveryFuturesMap.get(info.getBucketId()); if (deliveryFutures == null) { deliveryFutures = new LinkedList<RecordFuture>(); deliveryFuturesMap.put(info.getBucketId(), deliveryFutures); } deliveryFutures.add(future); } }
return new BucketInfo(currentBucketId, currentRecordCount);
response.setDeliveryStatuses(statuses); BucketInfo bucketInfo = new BucketInfo(status.getRequestId(), logCount); Mockito.when(storage.addLogRecord(Mockito.any(LogRecord.class))).thenReturn(bucketInfo); Assert.assertEquals(defaultId, future.get().getBucketInfo().getBucketId());
@Override public BucketInfo addLogRecord(LogRecord record) { LOG.trace("Adding new log record with size {}", record.getSize()); if (record.getSize() > maxBucketSize) { throw new IllegalArgumentException("Record size(" + record.getSize() + ") is bigger than max bucket size (" + maxBucketSize + ")!"); } synchronized (buckets) { if (consumedVolume + record.getSize() > maxStorageSize) { throw new IllegalStateException("Storage is full!"); } if (currentBucket == null || currentBucket.getState() != MemBucketState.FREE) { currentBucket = new MemBucket(bucketIdSeq.getAndIncrement(), maxBucketSize, maxBucketRecordCount); buckets.put(currentBucket.getId(), currentBucket); } if (!currentBucket.addRecord(record)) { LOG.trace("Current bucket is full. Creating new one."); currentBucket.setState(MemBucketState.FULL); currentBucket = new MemBucket(bucketIdSeq.getAndIncrement(), maxBucketSize, maxBucketRecordCount); buckets.put(currentBucket.getId(), currentBucket); currentBucket.addRecord(record); } recordCount++; consumedVolume += record.getSize(); } LOG.trace("Added a new log record to bucket [{}]", currentBucket.getId()); return new BucketInfo(currentBucket.getId(), currentBucket.getCount()); }
return new BucketInfo(currentBucketId, currentRecordCount);
protected void notifyDeliveryFuturesOnSuccess(BucketInfo info, Long arriveTime) { synchronized (deliveryFuturesMap) { List<RecordFuture> deliveryFutures = deliveryFuturesMap.get(info.getBucketId()); if (deliveryFutures != null) { for (RecordFuture future : deliveryFutures) { RecordInfo recordInfo = new RecordInfo(info); future.setValue(recordInfo, arriveTime); } deliveryFuturesMap.remove(info.getBucketId()); } } }
Log record = new Log(); Mockito.when(storage.addLogRecord(Mockito.any(LogRecord.class))).thenReturn(new BucketInfo(1, 1)); Mockito.when(storage.getStatus()).thenReturn(new LogStorageStatus() {
@Override public void run() { try { BucketInfo bucketInfo = storage.addLogRecord(new LogRecord(record)); bucketInfoMap.put(bucketInfo.getBucketId(), bucketInfo); addDeliveryFuture(bucketInfo, future); } catch (IOException ex) { LOG.warn("Can't serialize log record {}, exception catched: {}", record, ex); } uploadIfNeeded(); } });
Mockito.when(storage.addLogRecord(Mockito.any(LogRecord.class))).thenReturn(new BucketInfo(1, 1)); Mockito.when(storage.getStatus()).thenReturn(new LogStorageStatus() { @Override logCollector.addLogRecord(record); logCollector.addLogRecord(record); Mockito.when(storage.addLogRecord(Mockito.any(LogRecord.class))).thenReturn(new BucketInfo(1, 1)); Mockito.when(storage.getStatus()).thenReturn(new LogStorageStatus() {
Mockito.when(storage.addLogRecord(Mockito.any(LogRecord.class))).thenReturn(new BucketInfo(1, 1)); Mockito.when(storage.getStatus()).thenReturn(new LogStorageStatus() { @Override