Search in sources :

Example 11 with Note

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;
}
Also used : GrafeasClient(io.grafeas.v1.GrafeasClient) AnalysisStatus(io.grafeas.v1.DiscoveryOccurrence.AnalysisStatus) Occurrence(io.grafeas.v1.Occurrence) DiscoveryOccurrence(io.grafeas.v1.DiscoveryOccurrence) TimeoutException(java.util.concurrent.TimeoutException)

Example 12 with Note

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()));
}
Also used : CreateNoteRequest(io.grafeas.v1beta1.CreateNoteRequest) AbstractMessage(com.google.protobuf.AbstractMessage) ProjectName(com.google.containeranalysis.v1beta1.ProjectName) Note(io.grafeas.v1beta1.Note) Test(org.junit.Test)

Example 13 with Note

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()));
}
Also used : BatchCreateNotesRequest(io.grafeas.v1beta1.BatchCreateNotesRequest) AbstractMessage(com.google.protobuf.AbstractMessage) ProjectName(com.google.containeranalysis.v1beta1.ProjectName) HashMap(java.util.HashMap) Note(io.grafeas.v1beta1.Note) BatchCreateNotesResponse(io.grafeas.v1beta1.BatchCreateNotesResponse) Test(org.junit.Test)

Example 14 with Note

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
    }
}
Also used : InvalidArgumentException(com.google.api.gax.rpc.InvalidArgumentException) ProjectName(com.google.containeranalysis.v1beta1.ProjectName) Note(io.grafeas.v1beta1.Note) StatusRuntimeException(io.grpc.StatusRuntimeException) Test(org.junit.Test)

Example 15 with Note

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()));
}
Also used : ListNotesRequest(io.grafeas.v1beta1.ListNotesRequest) AbstractMessage(com.google.protobuf.AbstractMessage) ProjectName(com.google.containeranalysis.v1beta1.ProjectName) Note(io.grafeas.v1beta1.Note) ListNotesResponse(io.grafeas.v1beta1.ListNotesResponse) ListNotesPagedResponse(com.google.cloud.devtools.containeranalysis.v1beta1.GrafeasV1Beta1Client.ListNotesPagedResponse) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)14 Note (io.grafeas.v1beta1.Note)9 GrafeasClient (io.grafeas.v1.GrafeasClient)7 AbstractMessage (com.google.protobuf.AbstractMessage)6 ProjectName (com.google.containeranalysis.v1beta1.ProjectName)5 Note (io.grafeas.v1.Note)5 NoteName (io.grafeas.v1.NoteName)5 Occurrence (io.grafeas.v1.Occurrence)5 IOException (java.io.IOException)4 BookID (biblemulticonverter.data.BookID)3 FormattingInstructionKind (biblemulticonverter.data.FormattedText.FormattingInstructionKind)3 Visitor (biblemulticonverter.data.FormattedText.Visitor)3 Note (com.google.containeranalysis.v1alpha1.Note)3 NoteName (com.google.containeranalysis.v1beta1.NoteName)3 DiscoveryOccurrence (io.grafeas.v1.DiscoveryOccurrence)3 VulnerabilityNote (io.grafeas.v1.VulnerabilityNote)3 VulnerabilityOccurrence (io.grafeas.v1.VulnerabilityOccurrence)3 Note (biblemulticonverter.schema.usx3.Note)2 Verse (biblemulticonverter.schema.usx3.Verse)2 BR (biblemulticonverter.schema.zef2005.BR)2