/*
* Copyright 2015 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.kie.server.integrationtests.common;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.kie.server.api.KieServerEnvironment;
import org.kie.server.api.model.KieContainerResource;
import org.kie.server.api.model.KieScannerResource;
import org.kie.server.api.model.KieScannerStatus;
import org.kie.server.api.model.KieServerInfo;
import org.kie.server.api.model.ReleaseId;
import org.kie.server.api.model.ServiceResponse;
import org.kie.server.api.model.ServiceResponse.ResponseType;
import org.kie.server.integrationtests.shared.KieServerDeployer;
import org.kie.server.integrationtests.shared.basetests.RestJmsSharedBaseIntegrationTest;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
public class KieServerIntegrationTest extends RestJmsSharedBaseIntegrationTest {
private static ReleaseId releaseId1 = new ReleaseId("foo.bar", "baz", "2.1.0.GA");
private static final String CONTAINER_ID = "kie1";
@BeforeClass
public static void initialize() throws Exception {
KieServerDeployer.createAndDeployKJar(releaseId1);
}
@Test
public void testGetServerInfo() throws Exception {
ServiceResponse<KieServerInfo> reply = client.getServerInfo();
assertEquals(ServiceResponse.ResponseType.SUCCESS, reply.getType());
KieServerInfo info = reply.getResult();
assertEquals(getServerVersion(), info.getVersion());
// Kie server has all extensions disabled, available just default capability.
assertEquals(1, info.getCapabilities().size());
assertEquals("KieServer", info.getCapabilities().get(0));
}
private String getServerVersion() {
// use the property if specified and fallback to KieServerEnvironment if no property set
return System.getProperty("kie.server.version", KieServerEnvironment.getVersion().toString());
}
@Before
public void setupKieServer() {
disposeAllContainers();
createContainer(CONTAINER_ID, releaseId1);
}
@Test
public void testScanner() throws Exception {
ServiceResponse<KieScannerResource> si = client.getScannerInfo(CONTAINER_ID);
Assert.assertEquals( ResponseType.SUCCESS, si.getType() );
KieScannerResource info = si.getResult();
Assert.assertEquals( KieScannerStatus.DISPOSED, info.getStatus() );
si = client.updateScanner(CONTAINER_ID, new KieScannerResource(KieScannerStatus.STARTED, 10000L));
Assert.assertEquals( si.getMsg(), ResponseType.SUCCESS, si.getType() );
info = si.getResult();
Assert.assertEquals( KieScannerStatus.STARTED, info.getStatus() );
si = client.getScannerInfo(CONTAINER_ID);
Assert.assertEquals( si.getMsg(), ResponseType.SUCCESS, si.getType() );
info = si.getResult();
Assert.assertEquals( KieScannerStatus.STARTED, info.getStatus() );
si = client.updateScanner(CONTAINER_ID, new KieScannerResource(KieScannerStatus.STOPPED, 10000L));
Assert.assertEquals( si.getMsg(), ResponseType.SUCCESS, si.getType() );
info = si.getResult();
Assert.assertEquals( KieScannerStatus.STOPPED, info.getStatus() );
si = client.getScannerInfo(CONTAINER_ID);
Assert.assertEquals( si.getMsg(), ResponseType.SUCCESS, si.getType() );
info = si.getResult();
Assert.assertEquals( KieScannerStatus.STOPPED, info.getStatus() );
si = client.updateScanner(CONTAINER_ID, new KieScannerResource(KieScannerStatus.DISPOSED, 10000L));
Assert.assertEquals( si.getMsg(), ResponseType.SUCCESS, si.getType() );
info = si.getResult();
Assert.assertEquals( KieScannerStatus.DISPOSED, info.getStatus() );
si = client.getScannerInfo(CONTAINER_ID);
Assert.assertEquals( si.getMsg(), ResponseType.SUCCESS, si.getType() );
info = si.getResult();
Assert.assertEquals( KieScannerStatus.DISPOSED, info.getStatus() );
}
@Test
public void testScannerScanNow() throws Exception {
ServiceResponse<KieScannerResource> si = client.getScannerInfo(CONTAINER_ID);
Assert.assertEquals( ResponseType.SUCCESS, si.getType() );
KieScannerResource info = si.getResult();
Assert.assertEquals( KieScannerStatus.DISPOSED, info.getStatus() );
si = client.updateScanner(CONTAINER_ID, new KieScannerResource(KieScannerStatus.SCANNING, 0L));
Assert.assertEquals( si.getMsg(), ResponseType.SUCCESS, si.getType() );
info = si.getResult();
Assert.assertEquals( KieScannerStatus.STOPPED, info.getStatus() );
si = client.getScannerInfo(CONTAINER_ID);
Assert.assertEquals( si.getMsg(), ResponseType.SUCCESS, si.getType() );
info = si.getResult();
Assert.assertEquals( KieScannerStatus.STOPPED, info.getStatus() );
si = client.updateScanner(CONTAINER_ID, new KieScannerResource(KieScannerStatus.DISPOSED, 10000L));
Assert.assertEquals( si.getMsg(), ResponseType.SUCCESS, si.getType() );
info = si.getResult();
Assert.assertEquals( KieScannerStatus.DISPOSED, info.getStatus() );
si = client.getScannerInfo(CONTAINER_ID);
Assert.assertEquals( si.getMsg(), ResponseType.SUCCESS, si.getType() );
info = si.getResult();
Assert.assertEquals( KieScannerStatus.DISPOSED, info.getStatus() );
}
@Test
public void testScannerStatusOnContainerInfo() throws Exception {
ServiceResponse<KieContainerResource> reply = client.getContainerInfo(CONTAINER_ID);
Assert.assertEquals(ServiceResponse.ResponseType.SUCCESS, reply.getType());
KieContainerResource kci = reply.getResult();
Assert.assertEquals( KieScannerStatus.DISPOSED, kci.getScanner().getStatus() );
ServiceResponse<KieScannerResource> si = client.updateScanner(CONTAINER_ID, new KieScannerResource(KieScannerStatus.STARTED, 10000L));
Assert.assertEquals( si.getMsg(), ResponseType.SUCCESS, si.getType() );
KieScannerResource info = si.getResult();
Assert.assertEquals( KieScannerStatus.STARTED, info.getStatus() );
kci = client.getContainerInfo( CONTAINER_ID ).getResult();
Assert.assertEquals( KieScannerStatus.STARTED, kci.getScanner().getStatus() );
Assert.assertEquals( 10000, kci.getScanner().getPollInterval().longValue() );
si = client.updateScanner(CONTAINER_ID, new KieScannerResource(KieScannerStatus.STOPPED, 10000L));
Assert.assertEquals( si.getMsg(), ResponseType.SUCCESS, si.getType() );
info = si.getResult();
Assert.assertEquals( KieScannerStatus.STOPPED, info.getStatus() );
kci = client.getContainerInfo( CONTAINER_ID ).getResult();
Assert.assertEquals( KieScannerStatus.STOPPED, kci.getScanner().getStatus() );
si = client.updateScanner(CONTAINER_ID, new KieScannerResource(KieScannerStatus.DISPOSED, 10000L));
Assert.assertEquals( si.getMsg(), ResponseType.SUCCESS, si.getType() );
info = si.getResult();
Assert.assertEquals( KieScannerStatus.DISPOSED, info.getStatus() );
kci = client.getContainerInfo( CONTAINER_ID ).getResult();
Assert.assertEquals( KieScannerStatus.DISPOSED, kci.getScanner().getStatus() );
}
@Test
public void testScannerStartAndStop() throws Exception {
ServiceResponse<KieContainerResource> reply = client.getContainerInfo(CONTAINER_ID);
Assert.assertEquals(ServiceResponse.ResponseType.SUCCESS, reply.getType());
KieContainerResource kci = reply.getResult();
Assert.assertEquals(KieScannerStatus.DISPOSED, kci.getScanner().getStatus());
ServiceResponse<KieScannerResource> si = client.updateScanner(CONTAINER_ID, new KieScannerResource(KieScannerStatus.STARTED, 20L));
Assert.assertEquals(si.getMsg(), ResponseType.SUCCESS, si.getType());
KieScannerResource info = si.getResult();
Assert.assertEquals(KieScannerStatus.STARTED, info.getStatus());
kci = client.getContainerInfo(CONTAINER_ID).getResult();
Assert.assertEquals(KieScannerStatus.STARTED, kci.getScanner().getStatus());
Assert.assertEquals(20L, kci.getScanner().getPollInterval().longValue());
si = client.updateScanner(CONTAINER_ID, new KieScannerResource(KieScannerStatus.STOPPED, 20L));
Assert.assertEquals(si.getMsg(), ResponseType.SUCCESS, si.getType());
info = si.getResult();
Assert.assertEquals(KieScannerStatus.STOPPED, info.getStatus());
kci = client.getContainerInfo(CONTAINER_ID).getResult();
Assert.assertEquals(KieScannerStatus.STOPPED, kci.getScanner().getStatus());
si = client.updateScanner(CONTAINER_ID, new KieScannerResource(KieScannerStatus.STARTED, 20L));
Assert.assertEquals(si.getMsg(), ResponseType.SUCCESS, si.getType());
info = si.getResult();
Assert.assertEquals(KieScannerStatus.STARTED, info.getStatus());
kci = client.getContainerInfo(CONTAINER_ID).getResult();
Assert.assertEquals(KieScannerStatus.STARTED, kci.getScanner().getStatus());
Assert.assertEquals(20L, kci.getScanner().getPollInterval().longValue());
si = client.updateScanner(CONTAINER_ID, new KieScannerResource(KieScannerStatus.STOPPED, 20L));
Assert.assertEquals(si.getMsg(), ResponseType.SUCCESS, si.getType());
info = si.getResult();
Assert.assertEquals(KieScannerStatus.STOPPED, info.getStatus());
si = client.updateScanner(CONTAINER_ID, new KieScannerResource(KieScannerStatus.DISPOSED, 10000L));
Assert.assertEquals(si.getMsg(), ResponseType.SUCCESS, si.getType());
info = si.getResult();
Assert.assertEquals(KieScannerStatus.DISPOSED, info.getStatus());
}
@Test
public void testConversationIdHandling() throws Exception {
client.getContainerInfo(CONTAINER_ID);
String conversationId = client.getConversationId();
assertNotNull(conversationId);
client.getContainerInfo(CONTAINER_ID);
String afterNextCallConversationId = client.getConversationId();
assertEquals(conversationId, afterNextCallConversationId);
// complete conversation to start with new one
client.completeConversation();
client.getContainerInfo(CONTAINER_ID);
afterNextCallConversationId = client.getConversationId();
assertNotEquals(conversationId, afterNextCallConversationId);
}
}