use of io.codekvast.javaagent.model.v2.CommonPublicationData2 in project codekvast by crispab.
the class IntakeIntegrationTest method should_import_invocationDataPublication.
@Test
public void should_import_invocationDataPublication() {
// given
assertThat(countRowsInTable("applications"), is(0));
assertThat(countRowsInTable("environments"), is(0));
assertThat(countRowsInTable("jvms"), is(0));
assertThat(countRowsInTable("methods"), is(0));
assertThat(countRowsInTable("invocations"), is(0));
long intervalStartedAtMillis = System.currentTimeMillis();
InvocationDataPublication2 publication = InvocationDataPublication2.builder().commonData(CommonPublicationData2.sampleCommonPublicationData()).recordingIntervalStartedAtMillis(intervalStartedAtMillis).invocations(new HashSet<>(asList("signature", SYNTHETIC_SIGNATURE))).build();
// when
invocationDataImporter.importPublication(publication);
// then
assertThat(countRowsInTable("applications WHERE name = ?", publication.getCommonData().getAppName()), is(1));
assertThat(countRowsInTable("environments WHERE name = ?", publication.getCommonData().getEnvironment()), is(1));
assertThat(countRowsInTable("jvms WHERE uuid = ?", publication.getCommonData().getJvmUuid()), is(1));
assertThat(countRowsInTable("methods"), is(1));
assertThat(countRowsInTable("methods WHERE signature = ?", "signature"), is(1));
assertThat(countRowsInTable("invocations"), is(1));
assertThat(countRowsInTable("invocations WHERE invokedAtMillis = ?", intervalStartedAtMillis), is(1));
assertThat(countRowsInTable("invocations WHERE status = ?", INVOKED.name()), is(1));
}
use of io.codekvast.javaagent.model.v2.CommonPublicationData2 in project codekvast by crispab.
the class IntakeIntegrationTest method should_import_invocationDataPublication_then_codeBasePublication.
@Test
public void should_import_invocationDataPublication_then_codeBasePublication() {
// given
assertThat(countRowsInTable("applications"), is(0));
assertThat(countRowsInTable("environments"), is(0));
assertThat(countRowsInTable("jvms"), is(0));
assertThat(countRowsInTable("methods"), is(0));
assertThat(countRowsInTable("invocations"), is(0));
CommonPublicationData2 commonData = CommonPublicationData2.sampleCommonPublicationData();
CodeBaseEntry3 codeBaseEntry = CodeBaseEntry3.sampleCodeBaseEntry();
CodeBasePublication3 codeBasePublication = CodeBasePublication3.builder().commonData(commonData).entries(asList(codeBaseEntry)).build();
val signature = codeBaseEntry.getSignature();
long intervalStartedAtMillis = System.currentTimeMillis();
InvocationDataPublication2 invocationDataPublication = InvocationDataPublication2.builder().commonData(commonData).recordingIntervalStartedAtMillis(intervalStartedAtMillis).invocations(singleton(signature)).build();
// when
invocationDataImporter.importPublication(invocationDataPublication);
// then
assertThat(countRowsInTable("applications WHERE name = ?", codeBasePublication.getCommonData().getAppName()), is(1));
assertThat(countRowsInTable("environments WHERE name = ?", codeBasePublication.getCommonData().getEnvironment()), is(1));
assertThat(countRowsInTable("jvms WHERE uuid = ?", codeBasePublication.getCommonData().getJvmUuid()), is(1));
assertThat(countRowsInTable("methods WHERE signature = ?", signature), is(1));
assertThat(countRowsInTable("method_locations"), is(0));
assertThat(countRowsInTable("invocations"), is(1));
assertThat(countRowsInTable("invocations WHERE invokedAtMillis = ?", intervalStartedAtMillis), is(1));
assertThat(countRowsInTable("invocations WHERE status = ?", INVOKED.name()), is(1));
// given
long intervalStartedAtMillis2 = intervalStartedAtMillis + 3600;
// when
invocationDataImporter.importPublication(invocationDataPublication.toBuilder().recordingIntervalStartedAtMillis(intervalStartedAtMillis2).build());
// then
assertThat(countRowsInTable("invocations"), is(1));
assertThat(countRowsInTable("invocations WHERE invokedAtMillis = ?", intervalStartedAtMillis2), is(1));
assertThat(countRowsInTable("invocations WHERE status = ?", INVOKED.name()), is(1));
// when
codeBaseImporter.importPublication(codeBasePublication);
// then
assertThat(countRowsInTable("applications WHERE name = ?", codeBasePublication.getCommonData().getAppName()), is(1));
assertThat(countRowsInTable("environments WHERE name = ?", codeBasePublication.getCommonData().getEnvironment()), is(1));
assertThat(countRowsInTable("jvms WHERE uuid = ?", codeBasePublication.getCommonData().getJvmUuid()), is(1));
assertThat(countRowsInTable("methods WHERE signature = ?", signature), is(1));
assertThat(countRowsInTable("method_locations WHERE location = ?", codeBaseEntry.getMethodSignature().getLocation()), is(1));
assertThat(countRowsInTable("invocations"), is(1));
assertThat(countRowsInTable("invocations WHERE invokedAtMillis = ?", intervalStartedAtMillis2), is(1));
assertThat(countRowsInTable("invocations WHERE status = ?", INVOKED.name()), is(1));
}
use of io.codekvast.javaagent.model.v2.CommonPublicationData2 in project codekvast by crispab.
the class IntakeIntegrationTest method should_import_codeBasePublication2.
@Test
public void should_import_codeBasePublication2() {
// given
assertThat(countRowsInTable("applications"), is(0));
assertThat(countRowsInTable("environments"), is(0));
assertThat(countRowsInTable("jvms"), is(0));
assertThat(countRowsInTable("codebase_fingerprints"), is(0));
assertThat(countRowsInTable("packages"), is(0));
assertThat(countRowsInTable("types"), is(0));
assertThat(countRowsInTable("methods"), is(0));
assertThat(countRowsInTable("method_locations"), is(0));
assertThat(countRowsInTable("invocations"), is(0));
CodeBaseEntry2 entry1 = CodeBaseEntry2.sampleCodeBaseEntry();
CodeBasePublication2 publication = CodeBasePublication2.builder().commonData(CommonPublicationData2.sampleCommonPublicationData()).entries(asList(entry1, entry1.toBuilder().signature(SYNTHETIC_SIGNATURE).build())).build();
File file = writeToTempFile(publication);
// when
publicationImporter.importPublicationFile(file);
// then
assertThat(countRowsInTable("applications WHERE name = ?", publication.getCommonData().getAppName()), is(1));
assertThat(countRowsInTable("environments WHERE name = ?", publication.getCommonData().getEnvironment()), is(1));
assertThat(countRowsInTable("jvms WHERE uuid = ?", publication.getCommonData().getJvmUuid()), is(1));
assertThat(countRowsInTable("methods WHERE signature = ?", entry1.getSignature()), is(1));
assertThat(countRowsInTable("codebase_fingerprints WHERE codeBaseFingerprint = ?", publication.getCommonData().getCodeBaseFingerprint()), is(1));
assertThat(countRowsInTable("method_locations"), // location is not supported in CodeBaseEntry2
is(0));
assertThat(countRowsInTable("packages WHERE name = ?", entry1.getMethodSignature().getPackageName()), is(1));
assertThat(countRowsInTable("types WHERE name = ?", entry1.getMethodSignature().getDeclaringType()), is(1));
assertThat(countRowsInTable("methods WHERE signature = ?", entry1.getSignature()), is(1));
assertThat(countRowsInTable("methods WHERE signature = ?", SYNTHETIC_SIGNATURE), is(0));
assertThat(countRowsInTable("invocations WHERE invokedAtMillis = 0"), is(1));
assertThat(countRowsInTable("invocations WHERE status = ?", NOT_INVOKED.name()), is(1));
}
use of io.codekvast.javaagent.model.v2.CommonPublicationData2 in project codekvast by crispab.
the class IntakeIntegrationTest method should_import_codeBasePublication_then_invocationDataPublication_twice.
@Test
public void should_import_codeBasePublication_then_invocationDataPublication_twice() {
// given
assertThat(countRowsInTable("applications"), is(0));
assertThat(countRowsInTable("environments"), is(0));
assertThat(countRowsInTable("jvms"), is(0));
assertThat(countRowsInTable("methods"), is(0));
assertThat(countRowsInTable("invocations"), is(0));
String signature1 = "signature1";
String signature2 = "signature2";
CodeBaseEntry3 codeBaseEntry1 = CodeBaseEntry3.sampleCodeBaseEntry().toBuilder().signature(signature1).build();
CodeBaseEntry3 codeBaseEntry2 = CodeBaseEntry3.sampleCodeBaseEntry().toBuilder().signature(signature2).build();
CommonPublicationData2 commonData = CommonPublicationData2.sampleCommonPublicationData();
CodeBasePublication3 codeBasePublication = CodeBasePublication3.builder().commonData(commonData).entries(asList(codeBaseEntry1, codeBaseEntry2)).build();
// when Import a code base with two distinct signatures
codeBaseImporter.importPublication(codeBasePublication);
// then
assertThat(countRowsInTable("applications WHERE name = ?", codeBasePublication.getCommonData().getAppName()), is(1));
assertThat(countRowsInTable("environments WHERE name = ?", codeBasePublication.getCommonData().getEnvironment()), is(1));
assertThat(countRowsInTable("jvms WHERE uuid = ?", codeBasePublication.getCommonData().getJvmUuid()), is(1));
assertThat(countRowsInTable("methods"), is(2));
assertThat(countRowsInTable("methods WHERE signature = ?", signature1), is(1));
assertThat(countRowsInTable("methods WHERE signature = ?", signature2), is(1));
assertThat(countRowsInTable("method_locations"), is(2));
assertThat(countRowsInTable("invocations"), is(2));
assertThat(countRowsInTable("invocations WHERE invokedAtMillis = 0"), is(2));
assertThat(countRowsInTable("invocations WHERE status = ?", NOT_INVOKED.name()), is(2));
// given
long intervalStartedAtMillis1 = System.currentTimeMillis();
InvocationDataPublication2 invocationDataPublication1 = InvocationDataPublication2.builder().commonData(commonData).recordingIntervalStartedAtMillis(intervalStartedAtMillis1).invocations(singleton(signature1)).build();
long intervalStartedAtMillis2 = intervalStartedAtMillis1 + 3600;
InvocationDataPublication2 invocationDataPublication2 = invocationDataPublication1.toBuilder().recordingIntervalStartedAtMillis(intervalStartedAtMillis2).build();
// when Record the invocation of one of the signatures twice in reversed time order
invocationDataImporter.importPublication(invocationDataPublication2);
invocationDataImporter.importPublication(invocationDataPublication1);
// then
assertThat(countRowsInTable("invocations"), is(2));
assertThat(countRowsInTable("invocations WHERE invokedAtMillis = ?", 0), is(1));
assertThat(countRowsInTable("invocations WHERE invokedAtMillis = ?", intervalStartedAtMillis1), is(0));
assertThat(countRowsInTable("invocations WHERE invokedAtMillis = ?", intervalStartedAtMillis2), is(1));
assertThat(countRowsInTable("invocations WHERE status = ?", NOT_INVOKED.name()), is(1));
assertThat(countRowsInTable("invocations WHERE status = ?", INVOKED.name()), is(1));
// given
setSecurityContextCustomerId(commonData.getCustomerId());
}
use of io.codekvast.javaagent.model.v2.CommonPublicationData2 in project codekvast by crispab.
the class CodeBaseImporterImpl method importPublication.
@Override
@Transactional(rollbackFor = Exception.class)
public boolean importPublication(CodeBasePublication2 publication) {
logger.info("Importing {}", publication);
CommonPublicationData2 data = publication.getCommonData();
long customerId = data.getCustomerId();
long appId = importDAO.importApplication(data);
long environmentId = importDAO.importEnvironment(data);
long jvmId = importDAO.importJvm(data, appId, environmentId);
importDAO.importMethods(data, customerId, appId, environmentId, jvmId, publication.getCommonData().getPublishedAtMillis(), publication.getEntries());
return true;
}
Aggregations