use of io.grafeas.v1.Note in project java-docs-samples by GoogleCloudPlatform.
the class PollDiscoveryOccurrenceFinished method pollDiscoveryOccurrenceFinished.
// Repeatedly query the Container Analysis API for the latest discovery occurrence until it is
// either in a terminal state, or the timeout value has been exceeded
public static Occurrence pollDiscoveryOccurrenceFinished(String resourceUrl, String projectId, long timeoutSeconds) throws IOException, TimeoutException, InterruptedException {
// String resourceUrl = "https://gcr.io/project/image@sha256:123";
// String projectId = "my-project-id";
// long timeoutSeconds = 30;
final String projectName = ProjectName.format(projectId);
long deadline = System.currentTimeMillis() + timeoutSeconds * 1000;
// Initialize client that will be used to send requests. After completing all of your requests,
// call the "close" method on the client to safely clean up any remaining background resources.
GrafeasClient client = ContainerAnalysisClient.create().getGrafeasClient();
// find the discovery occurrence using a filter string
Occurrence discoveryOccurrence = null;
// vulbnerability discovery occurrences are always associated with the
// PACKAGE_VULNERABILITY note in the "goog-analysis" GCP project
String filter = String.format("resourceUrl=\"%s\" AND noteProjectId=\"%s\" AND noteId=\"%s\"", resourceUrl, "goog-analysis", "PACKAGE_VULNERABILITY");
// [END containeranalysis_poll_discovery_occurrence_finished]
// the above filter isn't testable, since it looks for occurrences in a locked down project
// fall back to a more permissive filter for testing
filter = String.format("kind=\"DISCOVERY\" AND resourceUrl=\"%s\"", resourceUrl);
// [START containeranalysis_poll_discovery_occurrence_finished]
while (discoveryOccurrence == null) {
for (Occurrence o : client.listOccurrences(projectName, filter).iterateAll()) {
if (o.getDiscovery() != null) {
// there should be only one valid discovery occurrence returned by the given filter
discoveryOccurrence = o;
}
}
TimeUnit.SECONDS.sleep(1);
// check for timeout
if (System.currentTimeMillis() > deadline) {
throw new TimeoutException("discovery occurrence not found");
}
}
// wait for discovery occurrence to enter a terminal state
AnalysisStatus status = AnalysisStatus.PENDING;
while (status != AnalysisStatus.FINISHED_SUCCESS && status != AnalysisStatus.FINISHED_FAILED && status != AnalysisStatus.FINISHED_UNSUPPORTED) {
// update the occurrence state
discoveryOccurrence = client.getOccurrence(discoveryOccurrence.getName());
status = discoveryOccurrence.getDiscovery().getAnalysisStatus();
TimeUnit.SECONDS.sleep(1);
// check for timeout
if (System.currentTimeMillis() > deadline) {
throw new TimeoutException("discovery occurrence not in terminal state");
}
}
return discoveryOccurrence;
}
use of io.grafeas.v1.Note in project java-containeranalysis by googleapis.
the class GrafeasV1Beta1ClientTest method createNoteTest.
@Test
@SuppressWarnings("all")
public void createNoteTest() {
String name = "name3373707";
String shortDescription = "shortDescription-235369287";
String longDescription = "longDescription-1747792199";
Note expectedResponse = Note.newBuilder().setName(name).setShortDescription(shortDescription).setLongDescription(longDescription).build();
mockGrafeasV1Beta1.addResponse(expectedResponse);
ProjectName parent = ProjectName.of("[PROJECT]");
String noteId = "noteId2129224840";
Note note = Note.newBuilder().build();
Note actualResponse = client.createNote(parent, noteId, note);
Assert.assertEquals(expectedResponse, actualResponse);
List<AbstractMessage> actualRequests = mockGrafeasV1Beta1.getRequests();
Assert.assertEquals(1, actualRequests.size());
CreateNoteRequest actualRequest = (CreateNoteRequest) actualRequests.get(0);
Assert.assertEquals(parent, ProjectName.parse(actualRequest.getParent()));
Assert.assertEquals(noteId, actualRequest.getNoteId());
Assert.assertEquals(note, actualRequest.getNote());
Assert.assertTrue(channelProvider.isHeaderSent(ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
}
use of io.grafeas.v1.Note in project java-containeranalysis by googleapis.
the class GrafeasV1Beta1ClientTest method batchCreateNotesTest.
@Test
@SuppressWarnings("all")
public void batchCreateNotesTest() {
BatchCreateNotesResponse expectedResponse = BatchCreateNotesResponse.newBuilder().build();
mockGrafeasV1Beta1.addResponse(expectedResponse);
ProjectName parent = ProjectName.of("[PROJECT]");
Map<String, Note> notes = new HashMap<>();
BatchCreateNotesResponse actualResponse = client.batchCreateNotes(parent, notes);
Assert.assertEquals(expectedResponse, actualResponse);
List<AbstractMessage> actualRequests = mockGrafeasV1Beta1.getRequests();
Assert.assertEquals(1, actualRequests.size());
BatchCreateNotesRequest actualRequest = (BatchCreateNotesRequest) actualRequests.get(0);
Assert.assertEquals(parent, ProjectName.parse(actualRequest.getParent()));
Assert.assertEquals(notes, actualRequest.getNotesMap());
Assert.assertTrue(channelProvider.isHeaderSent(ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
}
use of io.grafeas.v1.Note in project java-containeranalysis by googleapis.
the class GrafeasV1Beta1ClientTest method createNoteExceptionTest.
@Test
@SuppressWarnings("all")
public void createNoteExceptionTest() throws Exception {
StatusRuntimeException exception = new StatusRuntimeException(Status.INVALID_ARGUMENT);
mockGrafeasV1Beta1.addException(exception);
try {
ProjectName parent = ProjectName.of("[PROJECT]");
String noteId = "noteId2129224840";
Note note = Note.newBuilder().build();
client.createNote(parent, noteId, note);
Assert.fail("No exception raised");
} catch (InvalidArgumentException e) {
// Expected exception
}
}
use of io.grafeas.v1.Note in project java-containeranalysis by googleapis.
the class GrafeasV1Beta1ClientTest method listNotesTest.
@Test
@SuppressWarnings("all")
public void listNotesTest() {
String nextPageToken = "";
Note notesElement = Note.newBuilder().build();
List<Note> notes = Arrays.asList(notesElement);
ListNotesResponse expectedResponse = ListNotesResponse.newBuilder().setNextPageToken(nextPageToken).addAllNotes(notes).build();
mockGrafeasV1Beta1.addResponse(expectedResponse);
ProjectName parent = ProjectName.of("[PROJECT]");
String filter = "filter-1274492040";
ListNotesPagedResponse pagedListResponse = client.listNotes(parent, filter);
List<Note> resources = Lists.newArrayList(pagedListResponse.iterateAll());
Assert.assertEquals(1, resources.size());
Assert.assertEquals(expectedResponse.getNotesList().get(0), resources.get(0));
List<AbstractMessage> actualRequests = mockGrafeasV1Beta1.getRequests();
Assert.assertEquals(1, actualRequests.size());
ListNotesRequest actualRequest = (ListNotesRequest) actualRequests.get(0);
Assert.assertEquals(parent, ProjectName.parse(actualRequest.getParent()));
Assert.assertEquals(filter, actualRequest.getFilter());
Assert.assertTrue(channelProvider.isHeaderSent(ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
}
Aggregations