Commit e2e8b65a authored by Christos Tranoris's avatar Christos Tranoris
Browse files

Spring Test setup

parent 4deee493
Loading
Loading
Loading
Loading
Loading
+70 −8
Original line number Original line Diff line number Diff line
@@ -19,9 +19,14 @@
	<properties>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<spring.boot-version>${spring-boot-version}</spring.boot-version>
		<spring.boot-version>3.2.2</spring.boot-version>
		<spring.boot.fabric8-version>3.0.3</spring.boot.fabric8-version>
		<spring.boot.fabric8-version>3.1.0</spring.boot.fabric8-version>
		<fabric8.version>6.7.2</fabric8.version>
		<fabric8.version>6.10.0</fabric8.version>
		
		<!--spring.boot-version>${spring-boot-version}</spring.boot-version -->
		<!-- These versions  work>spring.boot.fabric8-version>3.0.5</spring.boot.fabric8-version -->
		<!-- >fabric8.version>6.6.2</fabric8.version -->
		
		<camel.version>4.0.0-RC1</camel.version>
		<camel.version>4.0.0-RC1</camel.version>
		<slf4j-api.version>1.7.5</slf4j-api.version>
		<slf4j-api.version>1.7.5</slf4j-api.version>
		<slf4j-simple.version>1.7.28</slf4j-simple.version>
		<slf4j-simple.version>1.7.28</slf4j-simple.version>
@@ -186,6 +191,63 @@
			<artifactId>slf4j-api</artifactId>
			<artifactId>slf4j-api</artifactId>
		</dependency>
		</dependency>



		<!-- Testing -->


		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter-engine</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.junit.platform</groupId>
			<artifactId>junit-platform-commons</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.junit.platform</groupId>
			<artifactId>junit-platform-runner</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.activemq</groupId>
			<artifactId>activemq-broker</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>javax.jms</groupId>
			<artifactId>javax.jms-api</artifactId>
			<version>2.0.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.15.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>io.fabric8</groupId>
			<artifactId>kubernetes-server-mock</artifactId>
			<version>${fabric8.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>io.fabric8</groupId>
			<artifactId>kubernetes-httpclient-okhttp</artifactId>
			<version>${fabric8.version}</version>
			<scope>test</scope>
		</dependency>




	</dependencies>
	</dependencies>


	<build>
	<build>
+0 −5
Original line number Original line Diff line number Diff line
@@ -32,11 +32,6 @@ public class CatalogClient extends RouteBuilder{
    @Autowired
    @Autowired
    private ProducerTemplate template;
    private ProducerTemplate template;


	@Value("${CATALOG_ADD_RESOURCESPEC}")
	private String CATALOG_ADD_RESOURCESPEC = "";

	@Value("${CATALOG_UPD_RESOURCESPEC}")
	private String CATALOG_UPD_RESOURCESPEC = "";
	
	
	@Value("${CATALOG_GET_RESOURCESPEC_BY_ID}")
	@Value("${CATALOG_GET_RESOURCESPEC_BY_ID}")
	private String CATALOG_GET_RESOURCESPEC_BY_ID = "";
	private String CATALOG_GET_RESOURCESPEC_BY_ID = "";
+2 −1
Original line number Original line Diff line number Diff line
@@ -54,6 +54,7 @@ public class CridgeSpingBoot implements CommandLineRunner {
     return new KubernetesClientBuilder().build();
     return new KubernetesClientBuilder().build();
  }
  }
  
  
  
  @Override
  @Override
  public void run(String... arg0) throws Exception {
  public void run(String... arg0) throws Exception {
    if (arg0.length > 0 && arg0[0].equals("exitcode")) {
    if (arg0.length > 0 && arg0[0].equals("exitcode")) {
+4 −3
Original line number Original line Diff line number Diff line
@@ -10,6 +10,7 @@ import org.etsi.osl.tmf.ri639.model.ResourceUpdate;
import org.slf4j.Logger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.ContextStoppedEvent;
import org.springframework.context.event.ContextStoppedEvent;
@@ -47,10 +48,10 @@ public class WatcherService {
	 * This one is executed when the cridge service application starts
	 * This one is executed when the cridge service application starts
	 * @param event
	 * @param event
	 */
	 */
	@EventListener
	@EventListener(ApplicationStartedEvent.class)
	public void onApplicationEvent(ContextRefreshedEvent event) {
	public void onApplicationEvent() {


		logger.info("Starting WatcherS.getervice event {} ", event.toString());
		//logger.info("Starting WatcherS.getervice event {} ", event.toString());
		logger.info("Starting WatcherService for cluster getContexts {} ",
		logger.info("Starting WatcherService for cluster getContexts {} ",
				kubernetesClientResource.getKubernetesClient().getConfiguration().getContexts().toString());
				kubernetesClientResource.getKubernetesClient().getConfiguration().getContexts().toString());
		
		
+163 −0
Original line number Original line Diff line number Diff line
package org.etsi.osl.cridge;

import java.net.HttpURLConnection;
import java.util.ArrayList;
import org.apache.camel.CamelContext;
import org.apache.camel.RoutesBuilder;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.model.dataformat.JsonLibrary;
import org.etsi.osl.tmf.ri639.model.ResourceCreate;
import org.junit.Rule;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.TestConfiguration;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.EventListener;
import jakarta.annotation.PostConstruct;
import org.springframework.test.context.event.RecordApplicationEvents;
import org.springframework.test.context.event.annotation.BeforeTestClass;
import org.springframework.test.context.junit4.SpringRunner;
import io.fabric8.kubernetes.api.model.ListMeta;
import io.fabric8.kubernetes.api.model.ListMetaBuilder;
import io.fabric8.kubernetes.api.model.NamedContext;
import io.fabric8.kubernetes.api.model.NamedContextBuilder;
import io.fabric8.kubernetes.api.model.apiextensions.v1.CustomResourceDefinitionList;
import io.fabric8.kubernetes.api.model.apiextensions.v1.CustomResourceDefinitionListBuilder;
import io.fabric8.kubernetes.client.Config;
import io.fabric8.kubernetes.client.ConfigBuilder;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.KubernetesClientBuilder;
import io.fabric8.kubernetes.client.extension.ExtensionAdapter.ClientFactory;
import io.fabric8.kubernetes.client.http.HttpClient.Factory;
import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
import io.fabric8.kubernetes.client.server.mock.KubernetesClientBuilderCustomizer;
import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
import io.fabric8.kubernetes.client.server.mock.KubernetesServer;

@RecordApplicationEvents
@RunWith(SpringRunner.class)
@SpringBootTest(properties = {

    "kubernetes.master = test_kube",
    "spring.activemq.brokerUrl = vm://embedded?broker.persistent=false,useShutdownHook=false",
    "CATALOG_GET_RESOURCESPEC_BY_ID = direct:get_rspec_byid",
    "CATALOG_GET_RESOURCESPEC_BY_ΝAME_CATEGORY = direct:get_rspec_byNameCategory",
    "CATALOG_UPDADD_RESOURCE = direct:updadd_resource",})


@EnableKubernetesMockClient
public class CridgeIntegrationTest {
  private static final Logger logger = LoggerFactory.getLogger("org.etsi.osl.cridge");

  private static KubernetesMockServer server;

  @Autowired
  CatalogClient catalogClient;


  /**
   * it is used to override beans and setup the environment before application context starts
   */
  @TestConfiguration
  static class routesPreparation {

    @Autowired
    private CamelContext camelContext;

    private SCMocked scmocked = new SCMocked();

    private KubernetesClient kubernetesClient;

    @Autowired
    KubernetesClientResource aKubernetesClientResource;

    RoutesBuilder builder = new RouteBuilder() {
      @Override
      public void configure() {
        from("direct:get_rspec_byid").bean(scmocked, "getRspecID");
        from("direct:get_rspec_byNameCategory").bean(scmocked,
            "get_rspec_byNameCategory(${header.aname}, ${header.acategory}, ${header.aversion})");
        from("direct:updadd_resource").unmarshal()
            .json(JsonLibrary.Jackson, ResourceCreate.class, true).bean(scmocked,
                "updadd_resource(${header.aname},${header.acategory}, ${header.aversion}, ${body})");

      };
    };


    @EventListener(ApplicationStartedEvent.class)
    public void preparedForTheTest() {
      logger.info("=============== Created routes for the test and initialise =============== ");

      NamedContext nctx = new NamedContextBuilder().withNewContext().withCluster("testCluster")
          .and().withName("tstContext").build();

      KubernetesClientBuilderCustomizer zzz = new KubernetesClientBuilderCustomizer();
      Config config = Config.autoConfigure(null);
      config.setNamespace("testNamespace");
      KubernetesClientBuilder xxx = new KubernetesClientBuilder().withConfig(config);
      zzz.accept(xxx);
      kubernetesClient = server.createClient(zzz);
      kubernetesClient.getConfiguration().setCurrentContext(nctx);


      aKubernetesClientResource.setKubernetesClient(kubernetesClient);
      logger.info("Starting preparedForTheTest kubernetesClient.toString() {} ",
          kubernetesClient.toString());
      logger.info("Starting preparedForTheTest for cluster getContexts {} ",
          kubernetesClient.getConfiguration().getContexts().toString());

      
   ListMeta metada = new ListMetaBuilder().build();
      // Given
      CustomResourceDefinitionList list = new CustomResourceDefinitionListBuilder()
          .withMetadata(metada )
          .build();
      
            
      //the following expects are for the sharedIndexInformers in the beginning
      server.expect()
        .get()
            .withPath("/apis/apiextensions.k8s.io/v1/customresourcedefinitions?resourceVersion=0")
            .andReturn(HttpURLConnection.HTTP_OK, list )
            .once();

      server.expect()
      .get()
          .withPath("/apis/apiextensions.k8s.io/v1/customresourcedefinitions?allowWatchBookmarks=true&timeoutSeconds=600&watch=true")
          .andReturn(HttpURLConnection.HTTP_OK, list )
          .once();
      
      try {
        camelContext.addRoutes(builder);
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }

  @BeforeTestClass
  public void beforeTestClass(ContextRefreshedEvent event) {
    logger.info("=============== beforeTestClass =============================");



  }


  @Test
  public void testCatalog() throws Exception {
    logger.info("===============TEST testCatalog =============================");



  }


}
Loading