Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[backend|frontend]Add the ability to customize the expiration time #1528

Open
wants to merge 12 commits into
base: master
Choose a base branch
from
Original file line number Diff line number Diff line change
Expand Up @@ -20,74 +20,75 @@
@Log
public class ExpectationsExpirationManagerService {

private final InjectExpectationService injectExpectationService;
private final ExpectationsExpirationManagerConfig config;
private final InjectExpectationService injectExpectationService;
private final ExpectationsExpirationManagerConfig config;


@Transactional(rollbackFor = Exception.class)
public void computeExpectations() {
List<InjectExpectation> expectations = this.injectExpectationService.expectationsNotFill();
if (!expectations.isEmpty()) {
this.computeExpectationsForAssets(expectations);
this.computeExpectationsForAssetGroups(expectations);
this.computeExpectations(expectations);
}
@Transactional(rollbackFor = Exception.class)
public void computeExpectations() {
List<InjectExpectation> expectations = this.injectExpectationService.expectationsNotFill();
if (!expectations.isEmpty()) {
this.computeExpectationsForAssets(expectations);
this.computeExpectationsForAssetGroups(expectations);
this.computeExpectations(expectations);

Check warning on line 33 in openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java

View check run for this annotation

Codecov / codecov/patch

openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java#L31-L33

Added lines #L31 - L33 were not covered by tests
}
}

// -- PRIVATE --
// -- PRIVATE --

private void computeExpectations(@NotNull final List<InjectExpectation> expectations) {
List<InjectExpectation> expectationAssets = expectations.stream().toList();
expectationAssets.forEach((expectation) -> {
// Maximum time for detection
if (isExpired(expectation, this.config.getExpirationTimeInMinute())) {
String result = computeFailedMessage(expectation.getType());
this.injectExpectationService.computeExpectation(
expectation,
this.config.getId(),
"collector",
PRODUCT_NAME,
result,
false
);
}
});
}
private void computeExpectations(@NotNull final List<InjectExpectation> expectations) {
List<InjectExpectation> expectationAssets = expectations.stream().toList();
expectationAssets.forEach((expectation) -> {

Check warning on line 41 in openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java

View check run for this annotation

Codecov / codecov/patch

openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java#L40-L41

Added lines #L40 - L41 were not covered by tests
if (isExpired(expectation)) {
String result = computeFailedMessage(expectation.getType());
this.injectExpectationService.computeExpectation(

Check warning on line 44 in openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java

View check run for this annotation

Codecov / codecov/patch

openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java#L43-L44

Added lines #L43 - L44 were not covered by tests
expectation,
this.config.getId(),

Check warning on line 46 in openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java

View check run for this annotation

Codecov / codecov/patch

openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java#L46

Added line #L46 was not covered by tests
"collector",
PRODUCT_NAME,
result,
false

Check warning on line 50 in openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java

View check run for this annotation

Codecov / codecov/patch

openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java#L50

Added line #L50 was not covered by tests
);
}

private void computeExpectationsForAssets(@NotNull final List<InjectExpectation> expectations) {
List<InjectExpectation> expectationAssets = expectations.stream().filter(e -> e.getAsset() != null).toList();
expectationAssets.forEach((expectation) -> {
// Maximum time for detection
if (isExpired(expectation, this.config.getAssetExpirationTimeInMinute())) {
String result = computeFailedMessage(expectation.getType());
this.injectExpectationService.computeExpectation(
expectation,
this.config.getId(),
"collector",
PRODUCT_NAME,
result,
false
);
}
});
}
});
}

Check warning on line 55 in openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java

View check run for this annotation

Codecov / codecov/patch

openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java#L54-L55

Added lines #L54 - L55 were not covered by tests

private void computeExpectationsForAssetGroups(@NotNull final List<InjectExpectation> expectations) {
List<InjectExpectation> expectationAssetGroups = expectations.stream().filter(e -> e.getAssetGroup() != null).toList();
expectationAssetGroups.forEach((expectationAssetGroup -> {
List<InjectExpectation> expectationAssets = this.injectExpectationService.expectationsForAssets(
expectationAssetGroup.getInject(), expectationAssetGroup.getAssetGroup(), expectationAssetGroup.getType()
);
// Every expectation assets are filled
if (expectationAssets.stream().noneMatch(e -> e.getResults().isEmpty())) {
this.injectExpectationService.computeExpectationGroup(
expectationAssetGroup,
expectationAssets,
this.config.getId(),
"collector",
PRODUCT_NAME
);
}
}));
}
private void computeExpectationsForAssets(@NotNull final List<InjectExpectation> expectations) {
List<InjectExpectation> expectationAssets = expectations.stream().filter(e -> e.getAsset() != null).toList();
expectationAssets.forEach((expectation) -> {

Check warning on line 59 in openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java

View check run for this annotation

Codecov / codecov/patch

openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java#L59

Added line #L59 was not covered by tests
if (isExpired(expectation)) {
String result = computeFailedMessage(expectation.getType());
this.injectExpectationService.computeExpectation(

Check warning on line 62 in openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java

View check run for this annotation

Codecov / codecov/patch

openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java#L61-L62

Added lines #L61 - L62 were not covered by tests
expectation,
this.config.getId(),

Check warning on line 64 in openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java

View check run for this annotation

Codecov / codecov/patch

openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java#L64

Added line #L64 was not covered by tests
"collector",
PRODUCT_NAME,
result,
false

Check warning on line 68 in openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java

View check run for this annotation

Codecov / codecov/patch

openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java#L68

Added line #L68 was not covered by tests
);
}

});
}

Check warning on line 73 in openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java

View check run for this annotation

Codecov / codecov/patch

openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java#L72-L73

Added lines #L72 - L73 were not covered by tests

private void computeExpectationsForAssetGroups(@NotNull final List<InjectExpectation> expectations) {
List<InjectExpectation> expectationAssetGroups = expectations.stream().filter(e -> e.getAssetGroup() != null)
.toList();
expectationAssetGroups.forEach((expectationAssetGroup -> {
List<InjectExpectation> expectationAssets = this.injectExpectationService.expectationsForAssets(
expectationAssetGroup.getInject(), expectationAssetGroup.getAssetGroup(), expectationAssetGroup.getType()

Check warning on line 80 in openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java

View check run for this annotation

Codecov / codecov/patch

openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java#L77-L80

Added lines #L77 - L80 were not covered by tests
);
// Every expectation assets are filled
if (expectationAssets.stream().noneMatch(e -> e.getResults().isEmpty())) {
this.injectExpectationService.computeExpectationGroup(

Check warning on line 84 in openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java

View check run for this annotation

Codecov / codecov/patch

openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java#L84

Added line #L84 was not covered by tests
expectationAssetGroup,
expectationAssets,
this.config.getId(),

Check warning on line 87 in openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java

View check run for this annotation

Codecov / codecov/patch

openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java#L87

Added line #L87 was not covered by tests
"collector",
PRODUCT_NAME
);
}
}));
}

Check warning on line 93 in openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java

View check run for this annotation

Codecov / codecov/patch

openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/service/ExpectationsExpirationManagerService.java#L92-L93

Added lines #L92 - L93 were not covered by tests
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,13 @@

public class ExpectationUtils {

public static boolean isExpired(@NotNull final InjectExpectation expectation, final int expirationTime) {
return expectation.getCreatedAt().isBefore(Instant.now().minus(expirationTime, ChronoUnit.MINUTES));
private ExpectationUtils() {

}

public static boolean isExpired(@NotNull final InjectExpectation expectation) {
Instant expirationTime = Instant.now().minus(expectation.getExpirationTime() / 60, ChronoUnit.MINUTES);
return expectation.getCreatedAt().isBefore(expirationTime);

Check warning on line 21 in openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/utils/ExpectationUtils.java

View check run for this annotation

Codecov / codecov/patch

openbas-api/src/main/java/io/openbas/collectors/expectations_expiration_manager/utils/ExpectationUtils.java#L20-L21

Added lines #L20 - L21 were not covered by tests
}

public static String computeFailedMessage(@NotNull final EXPECTATION_TYPE expectationType) {
Expand Down
Loading