Skip to content

Commit

Permalink
[pinpoint-apm#2853] Compress span event for integration tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Xylus committed Apr 25, 2017
1 parent b0675da commit 8c86fa9
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 3 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
/*
* Copyright 2017 NAVER Corp.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.navercorp.pinpoint.test;

import com.navercorp.pinpoint.profiler.context.Span;
import com.navercorp.pinpoint.profiler.context.SpanEvent;
import com.navercorp.pinpoint.profiler.context.compress.SpanEventCompressor;
import com.navercorp.pinpoint.profiler.context.storage.Storage;

import java.util.Collections;

/**
* @author HyunGil Jeong
*/
public class CompressingStorageDecorator implements Storage {

private final Storage delegate;
private final SpanEventCompressor<Long> spanEventCompressor;

public CompressingStorageDecorator(Storage delegate, SpanEventCompressor<Long> spanEventCompressor) {
if (delegate == null) {
throw new NullPointerException("delegate must not be null");
}
if (spanEventCompressor == null) {
throw new NullPointerException("spanEventCompressor must not be null");
}
this.delegate = delegate;
this.spanEventCompressor = spanEventCompressor;
}

@Override
public void store(SpanEvent spanEvent) {
if (spanEvent == null) {
throw new NullPointerException("spanEvent must not be null");
}
long keyTime = spanEvent.getSpan().getStartTime();
spanEventCompressor.compress(Collections.singletonList(spanEvent), keyTime);
delegate.store(spanEvent);
}

@Override
public void store(Span span) {
if (span == null) {
throw new NullPointerException("span must not be null");
}
delegate.store(span);
}

@Override
public void flush() {
delegate.flush();
}

@Override
public void close() {
delegate.close();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
import com.google.inject.AbstractModule;
import com.google.inject.util.Providers;
import com.navercorp.pinpoint.bootstrap.context.ServerMetaDataHolder;
import com.navercorp.pinpoint.profiler.context.compress.SpanEventCompressor;
import com.navercorp.pinpoint.profiler.context.compress.SpanEventCompressorV1;
import com.navercorp.pinpoint.profiler.context.module.SpanDataSender;
import com.navercorp.pinpoint.profiler.context.module.StatDataSender;
import com.navercorp.pinpoint.profiler.context.storage.StorageFactory;
Expand Down Expand Up @@ -109,7 +111,8 @@ private ServerMetaDataHolder newServerMetaDataHolder() {

protected StorageFactory newStorageFactory(DataSender spanDataSender) {
logger.debug("newStorageFactory dataSender:{}", spanDataSender);
StorageFactory storageFactory = new SimpleSpanStorageFactory(spanDataSender);
SpanEventCompressor<Long> spanEventCompressor = new SpanEventCompressorV1();
StorageFactory storageFactory = new SimpleSpanStorageFactory(spanDataSender, spanEventCompressor);
return storageFactory;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.navercorp.pinpoint.test;

import com.navercorp.pinpoint.profiler.context.compress.SpanEventCompressor;
import com.navercorp.pinpoint.profiler.context.storage.Storage;
import com.navercorp.pinpoint.profiler.context.storage.StorageFactory;
import com.navercorp.pinpoint.profiler.sender.DataSender;
Expand All @@ -27,17 +28,27 @@
public class SimpleSpanStorageFactory implements StorageFactory {

private final DataSender dataSender;
private final SpanEventCompressor<Long> spanEventCompressor;

public SimpleSpanStorageFactory(DataSender dataSender) {
this(dataSender, null);
}

public SimpleSpanStorageFactory(DataSender dataSender, SpanEventCompressor<Long> spanEventCompressor) {
if (dataSender == null) {
throw new NullPointerException("dataSender must not be null");
}
this.dataSender = dataSender;
this.spanEventCompressor = spanEventCompressor;
}

@Override
public Storage createStorage() {
return new SimpleSpanStorage(this.dataSender);
if (spanEventCompressor == null) {
return new SimpleSpanStorage(this.dataSender);
} else {
Storage storage = new SimpleSpanStorage(this.dataSender);
return new CompressingStorageDecorator(storage, spanEventCompressor);
}
}

}

0 comments on commit 8c86fa9

Please sign in to comment.