Search in sources :

Example 6 with ProductMilestone

use of org.jboss.pnc.model.ProductMilestone in project pnc by project-ncl.

the class DatabaseDataInitializer method initiliazeProjectProductData.

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void initiliazeProjectProductData() {
    BuildEnvironment environment1Unsaved = BuildEnvironment.Builder.newBuilder().name("Demo Environment 1").description("Basic Java and Maven Environment").attribute("JDK", "1.7.0").attribute("OS", "Linux").systemImageId("12345678").systemImageRepositoryUrl("my.registry/newcastle").systemImageType(SystemImageType.DOCKER_IMAGE).deprecated(false).build();
    BuildEnvironment environment1 = environmentRepository.save(environment1Unsaved);
    BuildEnvironment environment2Unsaved = BuildEnvironment.Builder.newBuilder().name("Demo Environment 2").description("Basic Java and Maven Environment").attribute("JDK", "1.7.0").attribute("OS", "Linux").systemImageId("12345679").systemImageRepositoryUrl("my.registry/newcastle").systemImageType(SystemImageType.DOCKER_IMAGE).deprecated(true).build();
    BuildEnvironment environment2 = environmentRepository.save(environment2Unsaved);
    /*
         * All the bi-directional mapping settings are managed inside the Builders
         */
    // Example product and product version
    Product product = Product.Builder.newBuilder().name(PNC_PRODUCT_NAME).abbreviation("PNC").description("Example Product for Project Newcastle Demo").build();
    product = productRepository.save(product);
    // Example product version, release, and milestone of the product
    ProductVersion productVersion1 = ProductVersion.Builder.newBuilder().version(PNC_PRODUCT_VERSION_1).product(product).generateBrewTagPrefix(product.getAbbreviation(), PNC_PRODUCT_VERSION_1, systemConfig.getBrewTagPattern()).build();
    productVersion1 = productVersionRepository.save(productVersion1);
    ProductVersion productVersion2 = ProductVersion.Builder.newBuilder().version(PNC_PRODUCT_VERSION_2).product(product).generateBrewTagPrefix(product.getAbbreviation(), PNC_PRODUCT_VERSION_2, systemConfig.getBrewTagPattern()).build();
    productVersion2 = productVersionRepository.save(productVersion2);
    demoProductMilestone1 = ProductMilestone.Builder.newBuilder().version(PNC_PRODUCT_MILESTONE1).startingDate(ONE_WEEK_BEFORE_TODAY).plannedEndDate(TODAY).productVersion(productVersion1).build();
    demoProductMilestone1 = productMilestoneRepository.save(demoProductMilestone1);
    ProductMilestone demoProductMilestone2 = ProductMilestone.Builder.newBuilder().version(PNC_PRODUCT_MILESTONE2).startingDate(TODAY).plannedEndDate(ONE_WEEK_AFTER_TODAY).productVersion(productVersion1).build();
    demoProductMilestone2 = productMilestoneRepository.save(demoProductMilestone2);
    Instant t0 = TODAY.toInstant();
    Instant successTime = t0.plus(10, ChronoUnit.MINUTES);
    ProductMilestone demoProductMilestone3 = ProductMilestone.Builder.newBuilder().version(PNC_PRODUCT_MILESTONE3).startingDate(TODAY).plannedEndDate(ONE_WEEK_AFTER_TODAY).endDate(ONE_WEEK_AFTER_TODAY).productVersion(productVersion1).build();
    demoProductMilestone3 = productMilestoneRepository.save(demoProductMilestone3);
    ProductMilestone demoProductMilestone4 = ProductMilestone.Builder.newBuilder().version(PNC_PRODUCT_MILESTONE4).startingDate(TODAY).plannedEndDate(ONE_WEEK_AFTER_TODAY).endDate(ONE_WEEK_AFTER_TODAY).productVersion(productVersion1).build();
    demoProductMilestone4 = productMilestoneRepository.save(demoProductMilestone4);
    ProductMilestoneRelease milestoneRelease1 = new ProductMilestoneRelease();
    milestoneRelease1.setId(Sequence.nextId());
    milestoneRelease1.setMilestone(demoProductMilestone3);
    // first store with latter starting date to test sort function
    milestoneRelease1.setStartingDate(Date.from(t0.plus(2, ChronoUnit.MINUTES)));
    milestoneRelease1.setStatus(MilestoneCloseStatus.SYSTEM_ERROR);
    productMilestoneReleaseRepository.save(milestoneRelease1);
    ProductMilestoneRelease milestoneRelease2 = new ProductMilestoneRelease();
    milestoneRelease2.setId(Sequence.nextId());
    milestoneRelease2.setMilestone(demoProductMilestone3);
    milestoneRelease2.setStartingDate(Date.from(t0));
    milestoneRelease2.setStatus(MilestoneCloseStatus.FAILED);
    productMilestoneReleaseRepository.save(milestoneRelease2);
    ProductMilestoneRelease milestoneRelease3 = new ProductMilestoneRelease();
    milestoneRelease3.setId(Sequence.nextId());
    milestoneRelease3.setMilestone(demoProductMilestone3);
    milestoneRelease3.setStartingDate(Date.from(successTime));
    milestoneRelease3.setStatus(MilestoneCloseStatus.SUCCEEDED);
    productMilestoneReleaseRepository.save(milestoneRelease3);
    ProductRelease productRelease = ProductRelease.Builder.newBuilder().version(PNC_PRODUCT_RELEASE).productMilestone(demoProductMilestone1).supportLevel(SupportLevel.EARLYACCESS).build();
    productRelease = productReleaseRepository.save(productRelease);
    productVersion1.setCurrentProductMilestone(demoProductMilestone3);
    productVersion1 = productVersionRepository.save(productVersion1);
    // Example projects
    Project project1 = Project.Builder.newBuilder().name(PNC_PROJECT_1_NAME).description("Example Project for Newcastle Demo").projectUrl("https://github.com/project-ncl/pnc").build();
    Project project2 = Project.Builder.newBuilder().name("Causeway").description("Causeway - Koji integration").projectUrl("https://github.com/project-ncl/causeway").build();
    Project project3 = Project.Builder.newBuilder().name("Pnc Build Agent").description("Pnc Build Agent - remote client to execute commands.").projectUrl("https://github.com/project-ncl/pnc-build-agent").build();
    Project project4 = Project.Builder.newBuilder().name("Dependency Analysis").description("Dependency Analysis - Analise project dependencies.").projectUrl("https://github.com/project-ncl/dependency-analysis").build();
    Project project5 = Project.Builder.newBuilder().name("termd").description("Remote shell.").projectUrl("https://github.com/project-ncl/termd").build();
    projectRepository.save(project1);
    projectRepository.save(project2);
    projectRepository.save(project3);
    projectRepository.save(project4);
    projectRepository.save(project5);
    RepositoryConfiguration repositoryConfiguration1 = createRepositoryConfiguration(demoDataConfig.getInternalRepo(0), "https://github.com/project-ncl/pnc.git");
    RepositoryConfiguration repositoryConfiguration2 = createRepositoryConfiguration(demoDataConfig.getInternalRepo(1), null);
    RepositoryConfiguration repositoryConfiguration3 = createRepositoryConfiguration(demoDataConfig.getInternalRepo(2), null);
    RepositoryConfiguration repositoryConfiguration4 = createRepositoryConfiguration(demoDataConfig.getInternalRepo(3), null);
    RepositoryConfiguration repositoryConfiguration5 = createRepositoryConfiguration(demoDataConfig.getInternalRepo(4), null);
    repositoryConfigurationRepository.save(repositoryConfiguration1);
    repositoryConfigurationRepository.save(repositoryConfiguration2);
    repositoryConfigurationRepository.save(repositoryConfiguration3);
    repositoryConfigurationRepository.save(repositoryConfiguration4);
    repositoryConfigurationRepository.save(repositoryConfiguration5);
    // Example build configurations
    Map<String, String> genericParameters = new HashMap<>();
    genericParameters.put("KEY", "VALUE");
    buildConfiguration1 = BuildConfiguration.Builder.newBuilder().id(sequenceHandlerRepository.getNextID(BuildConfiguration.SEQUENCE_NAME).intValue()).name(PNC_PROJECT_BUILD_CFG_ID).project(project1).description("Test build config for project newcastle").buildType(BuildType.MVN).buildEnvironment(environment1).buildScript("mvn deploy -DskipTests=true").repositoryConfiguration(repositoryConfiguration1).productVersion(productVersion1).scmRevision("*/v0.2").genericParameters(genericParameters).build();
    buildConfiguration1 = buildConfigurationRepository.save(buildConfiguration1);
    buildConfiguration2 = BuildConfiguration.Builder.newBuilder().id(sequenceHandlerRepository.getNextID(BuildConfiguration.SEQUENCE_NAME).intValue()).name("termd").project(project2).buildType(BuildType.MVN).description("Test configueration for Termd.").buildEnvironment(environment1).buildScript("mvn deploy -DskipTests=true").productVersion(productVersion1).repositoryConfiguration(repositoryConfiguration2).scmRevision("master").build();
    buildConfiguration2 = buildConfigurationRepository.save(buildConfiguration2);
    BuildConfiguration buildConfiguration3 = BuildConfiguration.Builder.newBuilder().id(sequenceHandlerRepository.getNextID(BuildConfiguration.SEQUENCE_NAME).intValue()).name("pnc-build-agent-0.4").project(project3).description("Test config for Pnc Build Agent.").buildType(BuildType.MVN).buildEnvironment(environment1).buildScript("mvn deploy -DskipTests=true").productVersion(productVersion2).repositoryConfiguration(repositoryConfiguration3).dependency(buildConfiguration2).build();
    buildConfiguration3 = buildConfigurationRepository.save(buildConfiguration3);
    BuildConfiguration buildConfiguration4 = BuildConfiguration.Builder.newBuilder().id(sequenceHandlerRepository.getNextID(BuildConfiguration.SEQUENCE_NAME).intValue()).name("dependency-analysis-1.3").project(project4).description("Test config for Dependency Analysis.").buildType(BuildType.MVN).buildEnvironment(environment1).buildScript("mvn deploy -DskipTests=true").repositoryConfiguration(repositoryConfiguration4).dependency(buildConfiguration1).build();
    buildConfiguration4 = buildConfigurationRepository.save(buildConfiguration4);
    BuildConfiguration buildConfiguration5 = BuildConfiguration.Builder.newBuilder().id(sequenceHandlerRepository.getNextID(BuildConfiguration.SEQUENCE_NAME).intValue()).name("maven-plugin-test").project(project5).description("Test build for Plugins with external downloads").buildType(BuildType.MVN).buildEnvironment(environment1).buildScript("mvn clean deploy").repositoryConfiguration(repositoryConfiguration5).build();
    buildConfiguration5 = buildConfigurationRepository.save(buildConfiguration5);
    // Build config set containing the three example build configs
    buildConfigurationSet1 = BuildConfigurationSet.Builder.newBuilder().name("Example-Build-Group-1").buildConfiguration(buildConfiguration1).buildConfiguration(buildConfiguration2).buildConfiguration(buildConfiguration3).productVersion(productVersion1).build();
    BuildConfigurationSet buildConfigurationSet2 = BuildConfigurationSet.Builder.newBuilder().name("Fabric-Build-Group").buildConfiguration(buildConfiguration4).productVersion(productVersion1).build();
    demoUser = User.Builder.newBuilder().username("demo-user").firstName("Demo First Name").lastName("Demo Last Name").email("demo-user@pnc.com").build();
    pncAdminUser = User.Builder.newBuilder().username("pnc-admin").firstName("pnc-admin").lastName("pnc-admin").email("pnc-admin@pnc.com").build();
    buildConfigurationSetRepository.save(buildConfigurationSet1);
    buildConfigurationSetRepository.save(buildConfigurationSet2);
    demoUser = userRepository.save(demoUser);
    pncAdminUser = userRepository.save(pncAdminUser);
}
Also used : ProductMilestone(org.jboss.pnc.model.ProductMilestone) HashMap(java.util.HashMap) Instant(java.time.Instant) Product(org.jboss.pnc.model.Product) ProductVersion(org.jboss.pnc.model.ProductVersion) BuildConfiguration(org.jboss.pnc.model.BuildConfiguration) Project(org.jboss.pnc.model.Project) BuildConfigurationSet(org.jboss.pnc.model.BuildConfigurationSet) BuildEnvironment(org.jboss.pnc.model.BuildEnvironment) ProductRelease(org.jboss.pnc.model.ProductRelease) RepositoryConfiguration(org.jboss.pnc.model.RepositoryConfiguration) ProductMilestoneRelease(org.jboss.pnc.model.ProductMilestoneRelease) TransactionAttribute(javax.ejb.TransactionAttribute)

Example 7 with ProductMilestone

use of org.jboss.pnc.model.ProductMilestone in project pnc by project-ncl.

the class ProductMilestoneReleaseRepositoryImplTest method shouldReturnProperLatest.

@Test
@InSequence(1)
public void shouldReturnProperLatest() {
    milestone1 = createMilestone();
    ProductMilestone milestone2 = createMilestone();
    release1 = new ProductMilestoneRelease();
    release1.setId(Sequence.nextId());
    release1.setMilestone(milestone1);
    release1.setStatus(MilestoneCloseStatus.FAILED);
    releaseRepository.save(release1);
    release2 = new ProductMilestoneRelease();
    release2.setId(Sequence.nextId());
    release2.setMilestone(milestone1);
    release2.setStatus(MilestoneCloseStatus.SUCCEEDED);
    releaseRepository.save(release2);
    ProductMilestoneRelease r3 = new ProductMilestoneRelease();
    r3.setId(Sequence.nextId());
    r3.setMilestone(milestone2);
    r3.setStatus(MilestoneCloseStatus.IN_PROGRESS);
    releaseRepository.save(r3);
    ProductMilestoneRelease latestByMilestone = releaseRepository.findLatestByMilestone(milestone1);
    assertThat(latestByMilestone).isNotNull();
    assertThat(latestByMilestone.getStatus()).isEqualTo(MilestoneCloseStatus.FAILED);
}
Also used : ProductMilestone(org.jboss.pnc.model.ProductMilestone) ProductMilestoneRelease(org.jboss.pnc.model.ProductMilestoneRelease) ContainerTest(org.jboss.pnc.test.category.ContainerTest) Test(org.junit.Test) InSequence(org.jboss.arquillian.junit.InSequence)

Example 8 with ProductMilestone

use of org.jboss.pnc.model.ProductMilestone in project pnc by project-ncl.

the class ProductMilestoneReleaseRepositoryImplTest method createMilestone.

private ProductMilestone createMilestone() {
    ProductMilestone milestone = new ProductMilestone();
    milestone.setVersion(randomNumeric(3) + "." + randomNumeric(3) + "." + randomNumeric(3) + ".ER1");
    milestone.setProductVersion(createProductVersion());
    milestoneRepository.save(milestone);
    return milestone;
}
Also used : ProductMilestone(org.jboss.pnc.model.ProductMilestone)

Example 9 with ProductMilestone

use of org.jboss.pnc.model.ProductMilestone in project pnc by project-ncl.

the class ProductMilestoneProviderTest method testCloseMilestoneShouldFailIfAlreadyClosed.

@Test
public void testCloseMilestoneShouldFailIfAlreadyClosed() {
    // given
    ProductMilestone closed = ProductMilestoneFactory.getInstance().createNewProductMilestoneFromProductVersion(mock.getProductVersion(), "9.8.7.GA");
    closed.setEndDate(new Date());
    repositoryList.add(closed);
    org.jboss.pnc.dto.ProductMilestone milestone = provider.getSpecific(closed.getId().toString());
    // when then
    assertThatThrownBy(() -> provider.closeMilestone(milestone.getId())).isInstanceOf(RepositoryViolationException.class);
}
Also used : ProductMilestone(org.jboss.pnc.model.ProductMilestone) Date(java.util.Date) Test(org.junit.Test)

Example 10 with ProductMilestone

use of org.jboss.pnc.model.ProductMilestone in project pnc by project-ncl.

the class ProductMilestoneProviderTest method setup.

@Before
public void setup() {
    when(userService.currentUserToken()).thenReturn("eyUserToken");
    when(bpmModuleConfig.isNewBpmForced()).thenReturn(true);
    ProductMilestoneFactory.getInstance().setIdSupplier(() -> entityId.getAndIncrement());
    List<ProductMilestone> productMilestones = new ArrayList<>();
    mock.setPerformedBuilds(new HashSet<BuildRecord>(Arrays.asList(new BuildRecord())));
    productMilestones.add(mock);
    productMilestones.add(mockSecond);
    productMilestones.add(ProductMilestoneFactory.getInstance().prepareNewProductMilestone("1.3", "1.3.2.GA"));
    productMilestones.add(ProductMilestoneFactory.getInstance().prepareNewProductMilestone("5.5", "5.5.5.CR1"));
    fillRepository(productMilestones);
}
Also used : ProductMilestone(org.jboss.pnc.model.ProductMilestone) ArrayList(java.util.ArrayList) BuildRecord(org.jboss.pnc.model.BuildRecord) Before(org.junit.Before)

Aggregations

ProductMilestone (org.jboss.pnc.model.ProductMilestone)15 Date (java.util.Date)4 Test (org.junit.Test)4 ProductMilestoneRelease (org.jboss.pnc.model.ProductMilestoneRelease)3 Optional (java.util.Optional)2 ProductMilestoneRef (org.jboss.pnc.dto.ProductMilestoneRef)2 BuildConfigSetRecord (org.jboss.pnc.model.BuildConfigSetRecord)2 BuildConfiguration (org.jboss.pnc.model.BuildConfiguration)2 BuildConfigurationSet (org.jboss.pnc.model.BuildConfigurationSet)2 BuildRecord (org.jboss.pnc.model.BuildRecord)2 ProductRelease (org.jboss.pnc.model.ProductRelease)2 ProductVersion (org.jboss.pnc.model.ProductVersion)2 Instant (java.time.Instant)1 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 Collections (java.util.Collections)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 Map (java.util.Map)1 Set (java.util.Set)1