Commit 9c1c6032 authored by lichenchong's avatar lichenchong
Browse files

Kinetic Test:

Update java test library from Junit to TestNG. The usage for maven
command line is the same as before.

For eclipse user, please install testng plugin, the instruction url:
http://testng.org/doc/download.html
parent b61237c7
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
src/main/python/kinetic/kinetic_pb2.py
/*/doc
/*/target
/*/test-output

/tmp
database.db
+11 −11
Original line number Diff line number Diff line
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.seagate.kinetic</groupId>
@@ -27,15 +28,14 @@
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.15</version>
				<dependencies>
					<dependency>
						<artifactId>surefire-junit47</artifactId>
						<groupId>org.apache.maven.surefire</groupId>
						<version>2.12</version>
					</dependency>
				</dependencies>
				<configuration>
					<suiteXmlFiles>
						<suiteXmlFile>testng.xml</suiteXmlFile>
					</suiteXmlFiles>
				</configuration>
				<executions>
					<execution>
						<id>default-test</id>
@@ -137,9 +137,9 @@
	</profiles>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.11</version>
			<groupId>org.testng</groupId>
			<artifactId>testng</artifactId>
			<version>6.8.8</version>
		</dependency>
		<dependency>
			<groupId>com.leacox.process</groupId>
+7 −8
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ package com.seagate.kinetic;
import kinetic.admin.AdminClientConfiguration;
import kinetic.admin.KineticAdminClient;
import kinetic.admin.KineticAdminClientFactory;
import kinetic.client.ClientConfiguration;
import kinetic.client.KineticClient;
import kinetic.client.KineticException;
import kinetic.client.p2p.KineticP2PClientFactory;
@@ -85,13 +84,13 @@ public abstract class AbstractIntegrationTestTarget {
        return clientConfiguration;
    }

    public ClientConfiguration getClientConfig() {
        ClientConfiguration clientConfiguration = new ClientConfiguration();
        clientConfiguration.setHost(host);
        clientConfiguration.setPort(port);
        clientConfiguration.setNioServiceThreads(1);
        return clientConfiguration;
    }
//    public ClientConfiguration getClientConfig() {
//        ClientConfiguration clientConfiguration = new ClientConfiguration();
//        clientConfiguration.setHost(host);
//        clientConfiguration.setPort(port);
//        clientConfiguration.setNioServiceThreads(1);
//        return clientConfiguration;
//    }

    public Peer getPeer() {
        Peer peer = new Peer();
+100 −34
Original line number Diff line number Diff line
@@ -19,13 +19,20 @@
 */
package com.seagate.kinetic;

import static org.testng.AssertJUnit.assertEquals;

import org.testng.annotations.AfterMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.BeforeMethod;

import static com.seagate.kinetic.KineticTestHelpers.toByteArray;
import static org.junit.Assert.assertEquals;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;

import kinetic.admin.AdminClientConfiguration;
@@ -38,9 +45,6 @@ import kinetic.client.KineticException;
import kinetic.client.p2p.KineticP2PClientFactory;
import kinetic.client.p2p.KineticP2pClient;

import org.junit.After;
import org.junit.Before;

import com.google.protobuf.ByteString;
import com.jcraft.jsch.JSchException;
import com.seagate.kinetic.client.internal.MessageFactory;
@@ -59,11 +63,12 @@ import com.seagate.kinetic.proto.Kinetic.Command.Security.ACL.Permission;
 *
 */
public class IntegrationTestCase {
    protected static final String NONNIO_NONSSL_CLIENT = "nonNio_nonSsl";
    protected static final String NIO_NONSSL_CLIENT = "nio_nonSsl";
    protected static final String NONNIO_SSL_CLIENT = "nonNio_ssl";
    
    // This will be assigned by the KineticTestRunner
    public KineticTestRunner.TestClientConfigConfigurator testClientConfigurator;

    private KineticP2pClient kineticClient;
    protected Map<String, KineticP2pClient> kineticClients = new HashMap<String,KineticP2pClient>();
    protected Map<String, ClientConfiguration> kineticClientConfigutations = new HashMap<String,ClientConfiguration>(); 
    private KineticAdminClient adminClient;
    private AbstractIntegrationTestTarget testTarget;

@@ -78,12 +83,16 @@ public class IntegrationTestCase {
     * @throws InterruptedException
     *             if any Interrupt error occurred
     */
    @Before
    @BeforeMethod(alwaysRun = true)
    public void startTestServer() throws InterruptedException,
            KineticException, IOException, JSchException, ExecutionException {
        testTarget = IntegrationTestTargetFactory.createTestTarget(true);
        kineticClient = KineticP2PClientFactory
                .createP2pClient(getClientConfig());
        kineticClients.clear();
        for (String clientName : kineticClientConfigutations.keySet())
        {
            kineticClients.put(clientName, KineticP2PClientFactory
                    .createP2pClient(kineticClientConfigutations.get(clientName)));
        }
        adminClient = KineticAdminClientFactory.createInstance(getAdminClientConfig());
    }

@@ -96,9 +105,9 @@ public class IntegrationTestCase {
     * @throws IOException
     *             if any IO error occurred.
     */
    @After
    @AfterMethod(alwaysRun = true)
    public void stopTestServer() throws Exception {
        kineticClient.close();
        closeKineticClients();
        adminClient.close();
        testTarget.shutdown();
    }
@@ -107,8 +116,8 @@ public class IntegrationTestCase {
     * Get a Kinetic client.
     * <p>
     */
    protected KineticP2pClient getClient() {
        return kineticClient;
    protected KineticP2pClient getClient(String clientName) {
        return kineticClients.get(clientName);
    }

    protected KineticAdminClient getAdminClient() {
@@ -120,15 +129,7 @@ public class IntegrationTestCase {
     * <p>
     */
    protected ClientConfiguration getClientConfig() {
        ClientConfiguration clientConfiguration = testTarget.getClientConfig();
        // Once all subclasses of IntegrationTestCase use the KineticTestRunner
        // we can
        // assume that testClientFactory will exist. Until then we have to
        // handle the case
        // where it's null
        if (testClientConfigurator != null) {
            testClientConfigurator.modifyClientConfig(clientConfiguration);
        }
        ClientConfiguration clientConfiguration = IntegrationTestTargetFactory.createDefaultClientConfig();
        return clientConfiguration;
    }

@@ -190,13 +191,17 @@ public class IntegrationTestCase {
     * <p>
     */
    protected void restartServer() throws Exception {
        kineticClient.close();
        closeKineticClients() ;
        adminClient.close();
        testTarget.shutdown();

        testTarget = IntegrationTestTargetFactory.createTestTarget(false);
        kineticClient = KineticP2PClientFactory
                .createP2pClient(getClientConfig());
        kineticClients.clear();
        for (String clientName : kineticClientConfigutations.keySet())
        {
            kineticClients.put(clientName, KineticP2PClientFactory
                    .createP2pClient(kineticClientConfigutations.get(clientName)));
        }
        adminClient = KineticAdminClientFactory.createInstance(getAdminClientConfig());
    }

@@ -229,7 +234,7 @@ public class IntegrationTestCase {
     * @param roles
     * @throws KineticException
     */
    public void createClientAclWithRoles(int clientId, String clientKeyString,
    public void createClientAclWithRoles(String clientName, int clientId, String clientKeyString,
            List<Kinetic.Command.Security.ACL.Permission> roles)
            throws KineticException {

@@ -239,7 +244,7 @@ public class IntegrationTestCase {
            domain.addPermission(role);
        }

        createClientAclWithDomains(clientId, clientKeyString,
        createClientAclWithDomains(clientName, clientId, clientKeyString,
                Collections.singletonList(domain.build()));

        // create a admin clientId with all permission to avoid user nor found.
@@ -260,7 +265,7 @@ public class IntegrationTestCase {
        for (Kinetic.Command.Security.ACL.Permission role : rolesAll) {
            domainAll.addPermission(role);
        }
        createClientAclWithDomains(clientIdAdmin, clientIdAdminKey,
        createClientAclWithDomains(clientName, clientIdAdmin, clientIdAdminKey,
                Collections.singletonList(domainAll.build()));

    }
@@ -274,7 +279,7 @@ public class IntegrationTestCase {
     * @param domains
     * @throws KineticException
     */
    public void createClientAclWithDomains(int clientId,
    public void createClientAclWithDomains(String clientName, int clientId,
            String clientKeyString,
            List<Kinetic.Command.Security.ACL.Scope> domains)
            throws KineticException {
@@ -302,11 +307,12 @@ public class IntegrationTestCase {
        }
        security.addAcl(acl);

        KineticMessage response = getClient().request(km);

        KineticMessage response = getClient(clientName).request(km);
        // Ensure setup succeeded, or else fail the calling test.
        assertEquals(Kinetic.Command.Status.StatusCode.SUCCESS, response
                .getCommand().getStatus().getCode());

        
    }

    /**
@@ -328,4 +334,64 @@ public class IntegrationTestCase {
        client.put(entry, null);
        return entry;
    }
    
    @DataProvider(name = "transportProtocolOptions")
    public Object[][] createObjectsBasedOnProtocolOptions() throws KineticException {
        
        createKineticClientConfugurations();
        Object[][] objects = new Object[kineticClientConfigutations.size()][];
        int i=0;
        for(String clientName : kineticClientConfigutations.keySet())
        {
            objects[i++] = new Object[] {clientName};
        }
        
        return objects;
    }

    private void createKineticClientConfugurations() throws KineticException {
        kineticClientConfigutations.clear();
        ClientConfiguration clientConfiguration;
        
        if (Boolean.parseBoolean(System.getProperty("RUN_TCP_TEST")))
        {
            clientConfiguration = getClientConfig() ;
            clientConfiguration.setUseSsl(false);
            clientConfiguration.setUseNio(false);
            kineticClientConfigutations.put(NONNIO_NONSSL_CLIENT, clientConfiguration);
        }
        
        if (Boolean.parseBoolean(System.getProperty("RUN_NIO_TEST")))
        {
            clientConfiguration = getClientConfig() ;
            clientConfiguration.setUseSsl(false);
            clientConfiguration.setUseNio(true);
            kineticClientConfigutations.put(NIO_NONSSL_CLIENT, clientConfiguration);
        }
        
        if (Boolean.parseBoolean(System.getProperty("RUN_SSL_TEST"))) 
        {
            clientConfiguration = getClientConfig();
            clientConfiguration.setUseSsl(true);
            clientConfiguration.setUseNio(false);
            clientConfiguration.setPort(clientConfiguration.getSSLDefaultPort());
            kineticClientConfigutations.put(NONNIO_SSL_CLIENT, clientConfiguration);
        }
        
        if (kineticClientConfigutations.size() == 0)
        {
            clientConfiguration = getClientConfig() ;
            clientConfiguration.setUseSsl(false);
            clientConfiguration.setUseNio(true);
            kineticClientConfigutations.put(NIO_NONSSL_CLIENT, clientConfiguration);
        }
    }
    
    private void closeKineticClients() throws KineticException {
        
        for(KineticP2pClient client: kineticClients.values())
        {
            client.close();
        }
    }
}
+10 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import java.io.IOException;
import java.net.ServerSocket;
import java.util.concurrent.ExecutionException;

import kinetic.client.ClientConfiguration;
import kinetic.client.KineticException;
import kinetic.simulator.SimulatorConfiguration;

@@ -91,6 +92,15 @@ public class IntegrationTestTargetFactory {
        return testTarget;
    }
    
    public static ClientConfiguration createDefaultClientConfig() {
        ClientConfiguration clientConfiguration = new ClientConfiguration();
        clientConfiguration.setHost(System.getProperty("KINETIC_HOST", "localhost"));
        clientConfiguration.setPort(Integer.parseInt(System.getProperty("KINETIC_PORT",
                "8123")));
        clientConfiguration.setNioServiceThreads(1);
        return clientConfiguration;
    }

    public static boolean isRunningAgainstSimulator() {
        return !Boolean
                .parseBoolean(System.getProperty("RUN_AGAINST_EXTERNAL"));
Loading