Skip to content

Commit

Permalink
fix: enable integration test for google-cloud-bigtable-stats (#1311)
Browse files Browse the repository at this point in the history
* fix: enable integration test for graal

* update

* add more comments
  • Loading branch information
mutianf authored Jul 15, 2022
1 parent 5ab424c commit 7c77879
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@
import com.google.api.core.InternalApi;
import com.google.api.gax.tracing.SpanName;
import io.opencensus.stats.Stats;
import io.opencensus.stats.View;
import io.opencensus.tags.TagKey;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
Expand All @@ -31,7 +34,6 @@
*/
@InternalApi("For internal use only")
public class StatsWrapper {

public static StatsRecorderWrapper createRecorder(
OperationType operationType, SpanName spanName, Map<String, String> statsAttributes) {
return new StatsRecorderWrapper(
Expand All @@ -49,4 +51,19 @@ public static List<String> getOperationLatencyViewTagValueStrings() {
.map(x -> x.asString())
.collect(Collectors.toCollection(ArrayList::new));
}

// A workaround to run ITBuiltinViewConstantsTest as integration test. Integration test runs after
// the packaging step. Opencensus classes will be relocated when they are packaged but the
// integration test files will not be. So the integration tests can't reference any transitive
// dependencies that have been relocated.
static Map<String, List<String>> getViewToTagMap() {
Map<String, List<String>> map = new HashMap<>();
for (View view : BuiltinViews.BIGTABLE_BUILTIN_VIEWS) {
List<TagKey> tagKeys = view.getColumns();
map.put(
view.getName().asString(),
tagKeys.stream().map(tagKey -> tagKey.getName()).collect(Collectors.toList()));
}
return map;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,22 @@

import static com.google.common.truth.Truth.assertWithMessage;

import io.opencensus.stats.View;
import java.util.List;
import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;

public class BuiltinViewConstantsTest {
@RunWith(JUnit4.class)
public class ITBuiltinViewConstantsTest {
@Test
public void testBasicTagsExistForAllViews() {
for (View v : BuiltinViews.BIGTABLE_BUILTIN_VIEWS) {
assertWithMessage(v.getName() + " should have all basic tags")
.that(v.getColumns())
Map<String, List<String>> viewToTagMap = StatsWrapper.getViewToTagMap();
for (String view : viewToTagMap.keySet()) {
assertWithMessage(view + " should have all basic tags")
.that(viewToTagMap.get(view))
.containsAtLeast(
BuiltinMeasureConstants.PROJECT_ID,
BuiltinMeasureConstants.INSTANCE_ID,
BuiltinMeasureConstants.APP_PROFILE,
BuiltinMeasureConstants.METHOD,
BuiltinMeasureConstants.ZONE,
BuiltinMeasureConstants.CLUSTER,
BuiltinMeasureConstants.TABLE);
"project_id", "instance_id", "app_profile", "method", "zone", "cluster", "table");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,14 @@
import java.util.Objects;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;

// Can only be run as a unit test. Opencensus classes will be relocated when they are packaged but
// the integration test files will not be. So the integration tests can't reference any transitive
// dependencies that have been relocated. To work around this, we'll have to move all the reference
// to opencensus to StatsWrapper.
@RunWith(JUnit4.class)
public class StatsRecorderWrapperTest {

private final String PROJECT_ID = "fake-project";
Expand Down

0 comments on commit 7c77879

Please sign in to comment.