Skip to content

Commit

Permalink
Support local deployment's param version matching (#404)
Browse files Browse the repository at this point in the history
  • Loading branch information
leaf94 authored Sep 1, 2020
1 parent 98fa16e commit f975bd5
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
import com.aws.iot.evergreen.util.CrashableFunction;
import com.aws.iot.evergreen.util.Pair;
import com.aws.iot.evergreen.util.Utils;
import com.vdurmont.semver4j.Requirement;
import com.vdurmont.semver4j.Semver;

import java.util.ArrayList;
import java.util.Collections;
Expand Down Expand Up @@ -295,8 +297,12 @@ private Optional<DeploymentPackageConfiguration> getMatchingPackageConfigFromDep
String packageName,
String packageVersion) {
return document.getDeploymentPackageConfigurationList().stream()
.filter(packageConfig -> packageName.equals(packageConfig.getPackageName()) && packageVersion
.equals(packageConfig.getResolvedVersion())).findAny();
.filter(packageConfig ->
packageName.equals(packageConfig.getPackageName())
// TODO packageConfig.getResolvedVersion() should be strongly typed when created
&& Requirement.buildNPM(packageConfig.getResolvedVersion())
.isSatisfiedBy(new Semver(packageVersion, Semver.SemverType.NPM)))
.findAny();
}

private Set<PackageParameter> resolveParameterValuesToUseWithCache(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import com.aws.iot.evergreen.deployment.model.DeploymentPackageConfiguration;
import com.aws.iot.evergreen.kernel.EvergreenService;
import com.aws.iot.evergreen.kernel.Kernel;
import com.aws.iot.evergreen.packagemanager.exceptions.PackageLoadingException;
import com.aws.iot.evergreen.packagemanager.models.PackageIdentifier;
import com.aws.iot.evergreen.packagemanager.models.PackageParameter;
import com.aws.iot.evergreen.packagemanager.models.PackageRecipe;
Expand Down Expand Up @@ -111,9 +110,9 @@ void GIVEN_deployment_for_package_WHEN_config_resolution_requested_THEN_add_serv
TEST_INPUT_PACKAGE_B);

DeploymentPackageConfiguration rootPackageDeploymentConfig =
new DeploymentPackageConfiguration(TEST_INPUT_PACKAGE_A, true, "1.2", Collections.emptyMap());
new DeploymentPackageConfiguration(TEST_INPUT_PACKAGE_A, true, "=1.2", Collections.emptyMap());
DeploymentPackageConfiguration dependencyPackageDeploymentConfig =
new DeploymentPackageConfiguration(TEST_INPUT_PACKAGE_B, false, "2.3", Collections.emptyMap());
new DeploymentPackageConfiguration(TEST_INPUT_PACKAGE_B, false, "=2.3", Collections.emptyMap());
DeploymentDocument document = DeploymentDocument.builder()
.rootPackages(Arrays.asList(TEST_INPUT_PACKAGE_A))
.deploymentPackageConfigurationList(
Expand Down Expand Up @@ -149,7 +148,6 @@ void GIVEN_deployment_for_package_WHEN_config_resolution_requested_THEN_add_serv
dependencyListContains("main", TEST_INPUT_PACKAGE_A, servicesConfig));
assertThat("Main service must depend on existing service",
dependencyListContains("main", "IpcService" + ":" + DependencyType.HARD, servicesConfig));
System.out.println(servicesConfig);
assertThat("New service must depend on dependency service",
dependencyListContains(TEST_INPUT_PACKAGE_A, TEST_INPUT_PACKAGE_B, servicesConfig));

Expand All @@ -167,7 +165,7 @@ void GIVEN_deployment_for_existing_package_WHEN_config_resolution_requested_THEN
TEST_INPUT_PACKAGE_A);

DeploymentPackageConfiguration rootPackageDeploymentConfig =
new DeploymentPackageConfiguration(TEST_INPUT_PACKAGE_A, true, "1.2", Collections.emptyMap());
new DeploymentPackageConfiguration(TEST_INPUT_PACKAGE_A, true, "=1.2", Collections.emptyMap());
DeploymentDocument document = DeploymentDocument.builder()
.rootPackages(Arrays.asList(TEST_INPUT_PACKAGE_A))
.deploymentPackageConfigurationList(
Expand Down Expand Up @@ -213,7 +211,7 @@ void GIVEN_deployment_with_parameters_set_WHEN_config_resolution_requested_THEN_
getSimpleParameterMap(TEST_INPUT_PACKAGE_A), TEST_INPUT_PACKAGE_A);

DeploymentPackageConfiguration rootPackageDeploymentConfig =
new DeploymentPackageConfiguration(TEST_INPUT_PACKAGE_A, true, "1.2", new HashMap<String, Object>() {{
new DeploymentPackageConfiguration(TEST_INPUT_PACKAGE_A, true, ">=1.2", new HashMap<String, Object>() {{
put("PackageA_Param_1", "PackageA_Param_1_value");
}});
DeploymentDocument document = DeploymentDocument.builder()
Expand Down Expand Up @@ -273,22 +271,24 @@ void GIVEN_deployment_with_parameters_set_WHEN_config_resolution_requested_THEN_

PackageRecipe rootPackageRecipe = getPackage(TEST_INPUT_PACKAGE_A, "1.2", Collections.emptyMap(),
getSimpleParameterMap(TEST_INPUT_PACKAGE_A), TEST_INPUT_PACKAGE_A);

// B-1.5 -> A-1.2
PackageRecipe package2Recipe = getPackage(TEST_INPUT_PACKAGE_B, "1.5", Utils.immutableMap(TEST_INPUT_PACKAGE_A,
new RecipeDependencyProperties("=1.2", DependencyType.HARD.toString())),
getSimpleParameterMap(TEST_INPUT_PACKAGE_B), TEST_INPUT_PACKAGE_A);
PackageRecipe package3Recipe = getPackage(TEST_INPUT_PACKAGE_C, "1.5", Collections.emptyMap(),
getSimpleParameterMap(TEST_INPUT_PACKAGE_C), TEST_INPUT_PACKAGE_A);

DeploymentPackageConfiguration rootPackageDeploymentConfig =
new DeploymentPackageConfiguration(TEST_INPUT_PACKAGE_A, true, "1.2", new HashMap<String, Object>() {{
new DeploymentPackageConfiguration(TEST_INPUT_PACKAGE_A, true, "=1.2", new HashMap<String, Object>() {{
put("PackageA_Param_1", "PackageA_Param_1_value");
}});
DeploymentPackageConfiguration package2DeploymentConfig =
new DeploymentPackageConfiguration(TEST_INPUT_PACKAGE_B, true, "1.2", new HashMap<String, Object>() {{
new DeploymentPackageConfiguration(TEST_INPUT_PACKAGE_B, true, "=1.5", new HashMap<String, Object>() {{
put("PackageB_Param_1", "PackageB_Param_1_value");
}});
DeploymentPackageConfiguration package3DeploymentConfig =
new DeploymentPackageConfiguration(TEST_INPUT_PACKAGE_C, true, "1.2", Collections.emptyMap());
new DeploymentPackageConfiguration(TEST_INPUT_PACKAGE_C, true, "=1.5", Collections.emptyMap());
DeploymentDocument document = DeploymentDocument.builder()
.rootPackages(Arrays.asList(TEST_INPUT_PACKAGE_A,
TEST_INPUT_PACKAGE_B, TEST_INPUT_PACKAGE_C))
Expand Down Expand Up @@ -342,7 +342,7 @@ void GIVEN_deployment_with_params_not_set_WHEN_previous_deployment_had_params_TH
getSimpleParameterMap(TEST_INPUT_PACKAGE_A), TEST_INPUT_PACKAGE_A);

DeploymentPackageConfiguration rootPackageDeploymentConfig =
new DeploymentPackageConfiguration(TEST_INPUT_PACKAGE_A, true, "1.2", Collections.emptyMap());
new DeploymentPackageConfiguration(TEST_INPUT_PACKAGE_A, true, "=1.2", Collections.emptyMap());
DeploymentDocument document = DeploymentDocument.builder()
.rootPackages(Arrays.asList(TEST_INPUT_PACKAGE_A))
.deploymentPackageConfigurationList(
Expand Down Expand Up @@ -406,7 +406,7 @@ void GIVEN_deployment_with_artifact_WHEN_config_resolution_requested_THEN_artifa
}}, Collections.emptyList(), Collections.emptyMap(), null);

DeploymentPackageConfiguration rootPackageDeploymentConfig =
new DeploymentPackageConfiguration(TEST_INPUT_PACKAGE_A, true, "1.2", Collections.emptyMap());
new DeploymentPackageConfiguration(TEST_INPUT_PACKAGE_A, true, "=1.2", Collections.emptyMap());
DeploymentDocument document = DeploymentDocument.builder()
.rootPackages(Arrays.asList(TEST_INPUT_PACKAGE_A))
.deploymentPackageConfigurationList(
Expand Down Expand Up @@ -437,8 +437,7 @@ void GIVEN_deployment_with_artifact_WHEN_config_resolution_requested_THEN_artifa
// utilities for mocking input
private PackageRecipe getPackage(String packageName, String packageVersion,
Map<String, RecipeDependencyProperties> dependencies,
Map<String, String> packageParamsWithDefaultsRaw, String crossComponentName)
throws PackageLoadingException {
Map<String, String> packageParamsWithDefaultsRaw, String crossComponentName) {

Set<PackageParameter> parameters = packageParamsWithDefaultsRaw.entrySet()
.stream()
Expand Down

0 comments on commit f975bd5

Please sign in to comment.