void testGetApplicationsUsingParams()

in genie-client/src/integTest/java/com/netflix/genie/client/ApplicationClientIntegrationTest.java [69:181]


    void testGetApplicationsUsingParams() throws Exception {
        final String application1Id = UUID.randomUUID().toString();
        final String application2Id = UUID.randomUUID().toString();

        final Set<String> application1Tags = Sets.newHashSet("foo", "pi");
        final Set<String> application2Tags = Sets.newHashSet("bar", "pi");

        final Application application1 = new Application.Builder(
            "application1name",
            "application1user",
            "1.0",
            ApplicationStatus.ACTIVE
        )
            .withId(application1Id)
            .withTags(application1Tags)
            .build();

        final Application application2 =
            new Application.Builder(
                "application2name",
                "application2user",
                "2.0",
                ApplicationStatus.INACTIVE
            )
                .withId(application2Id)
                .withTags(application2Tags)
                .build();

        this.applicationClient.createApplication(application1);
        this.applicationClient.createApplication(application2);

        // Test get by tags
        List<Application> applicationList = this.applicationClient.getApplications(
            null,
            null,
            null,
            Lists.newArrayList("foo"),
            null
        );
        Assertions
            .assertThat(applicationList)
            .hasSize(1)
            .extracting(Application::getId)
            .filteredOn(Optional::isPresent)
            .extracting(Optional::get)
            .containsExactly(application1Id);

        applicationList = this.applicationClient.getApplications(
            null,
            null,
            null,
            Lists.newArrayList("pi"),
            null
        );

        Assertions
            .assertThat(applicationList)
            .hasSize(2)
            .extracting(Application::getId)
            .filteredOn(Optional::isPresent)
            .extracting(Optional::get)
            .containsExactly(application2Id, application1Id);

        // Test get by name
        applicationList = this.applicationClient.getApplications(
            "application1name",
            null,
            null,
            null,
            null
        );

        Assertions
            .assertThat(applicationList)
            .hasSize(1)
            .extracting(Application::getId)
            .filteredOn(Optional::isPresent)
            .extracting(Optional::get)
            .containsExactly(application1Id);

        // Test get by status
        applicationList = this.applicationClient.getApplications(
            null,
            null,
            Lists.newArrayList(ApplicationStatus.ACTIVE.toString()),
            null,
            null
        );

        Assertions
            .assertThat(applicationList)
            .hasSize(1)
            .extracting(Application::getId)
            .filteredOn(Optional::isPresent)
            .extracting(Optional::get)
            .containsExactly(application1Id);

        applicationList = this.applicationClient.getApplications(
            null,
            null,
            Arrays.asList(ApplicationStatus.ACTIVE.toString(), ApplicationStatus.INACTIVE.toString()),
            null,
            null
        );

        Assertions
            .assertThat(applicationList)
            .hasSize(2)
            .extracting(Application::getId)
            .filteredOn(Optional::isPresent)
            .extracting(Optional::get)
            .containsExactlyInAnyOrder(application1Id, application2Id);
    }