diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/pom.xml index fb5e95c2db8..24ea5e33b67 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/pom.xml @@ -86,6 +86,10 @@ <groupId>org.json.wso2</groupId> <artifactId>json</artifactId> </dependency> + <dependency> + <groupId>org.wso2.carbon</groupId> + <artifactId>org.wso2.carbon.securevault</artifactId> + </dependency> </dependencies> <build> diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/config/AnalyticsConfiguration.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/config/AnalyticsConfiguration.java index 8c08d5eccf4..b758d4cf1c8 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/config/AnalyticsConfiguration.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/main/java/org/wso2/carbon/device/mgt/analytics/data/publisher/config/AnalyticsConfiguration.java @@ -98,8 +98,12 @@ public class AnalyticsConfiguration { } public static void init() throws DataPublisherConfigurationException { + init(AnalyticsConfiguration.DEVICE_ANALYTICS_CONFIG_PATH); + } + + public static void init(String analyticsConfigPath) throws DataPublisherConfigurationException { try { - File authConfig = new File(AnalyticsConfiguration.DEVICE_ANALYTICS_CONFIG_PATH); + File authConfig = new File(analyticsConfigPath); Document doc = DataPublisherUtil.convertToDocument(authConfig); /* Un-marshaling device analytics configuration */ diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/java/org/wso2/carbon/device/mgt/analytics/data/publisher/BaseAnalyticsDataPublisherTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/java/org/wso2/carbon/device/mgt/analytics/data/publisher/BaseAnalyticsDataPublisherTest.java new file mode 100644 index 00000000000..3d42a3020b3 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/java/org/wso2/carbon/device/mgt/analytics/data/publisher/BaseAnalyticsDataPublisherTest.java @@ -0,0 +1,57 @@ +/* +* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. +* WSO2 Inc. licenses this file to you under the Apache License, +* Version 2.0 (the "License"); you may not use this file except +* in compliance with the License. +* You may obtain a copy of the License at +* +* 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.wso2.carbon.device.mgt.analytics.data.publisher; + +import org.testng.annotations.BeforeSuite; +import org.wso2.carbon.base.MultitenantConstants; +import org.wso2.carbon.context.PrivilegedCarbonContext; + +import java.io.File; + +public class BaseAnalyticsDataPublisherTest { + + @BeforeSuite + public void init() { + setUpCarbonHome(); + } + + private void setUpCarbonHome() { + if (System.getProperty("carbon.home") == null) { + File file = new File("src/test/resources/carbon-home"); + if (file.exists()) { + System.setProperty("carbon.home", file.getAbsolutePath()); + } + file = new File("carbon-home"); + if (file.exists()) { + System.setProperty("carbon.home", file.getAbsolutePath()); + } + file = new File("../../resources/carbon-home"); + if (file.exists()) { + System.setProperty("carbon.home", file.getAbsolutePath()); + } + file = new File("../../../resources/carbon-home"); + if (file.exists()) { + System.setProperty("carbon.home", file.getAbsolutePath()); + } + } + PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(MultitenantConstants + .SUPER_TENANT_DOMAIN_NAME); + PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(MultitenantConstants.SUPER_TENANT_ID); + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/java/org/wso2/carbon/device/mgt/analytics/data/publisher/DataPublisherConfigTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/java/org/wso2/carbon/device/mgt/analytics/data/publisher/DataPublisherConfigTest.java new file mode 100644 index 00000000000..99c7c628fbc --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/java/org/wso2/carbon/device/mgt/analytics/data/publisher/DataPublisherConfigTest.java @@ -0,0 +1,47 @@ +/* +* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. +* WSO2 Inc. licenses this file to you under the Apache License, +* Version 2.0 (the "License"); you may not use this file except +* in compliance with the License. +* You may obtain a copy of the License at +* +* 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.wso2.carbon.device.mgt.analytics.data.publisher; + +import junit.framework.Assert; +import org.testng.annotations.Test; +import org.wso2.carbon.device.mgt.analytics.data.publisher.config.AnalyticsConfiguration; +import org.wso2.carbon.device.mgt.analytics.data.publisher.config.InvalidConfigurationStateException; +import org.wso2.carbon.device.mgt.analytics.data.publisher.exception.DataPublisherConfigurationException; + +public class DataPublisherConfigTest extends BaseAnalyticsDataPublisherTest { + + @Test(description = "Validating the behaviour od getInstance of the config before calling the init", + expectedExceptions = InvalidConfigurationStateException.class) + public void testGetInstanceWithoutInit(){ + AnalyticsConfiguration.getInstance(); + } + + public void testInitWithInvalidConfig() throws DataPublisherConfigurationException { + AnalyticsConfiguration.init(); + } + + @Test (description = "Validating the init method with all required params", dependsOnMethods = "testGetInstanceWithoutInit") + public void testInit() throws DataPublisherConfigurationException { + AnalyticsConfiguration.init(); + AnalyticsConfiguration analyticsConfiguration = AnalyticsConfiguration.getInstance(); + Assert.assertEquals(analyticsConfiguration.getAdminPassword(), "testuserpwd"); + Assert.assertEquals(analyticsConfiguration.getAdminUsername(), "testuser"); + Assert.assertEquals(analyticsConfiguration.getReceiverServerUrl(), "tcp://localhost:7615"); + Assert.assertTrue(analyticsConfiguration.isEnable()); + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/carbon.xml b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/carbon.xml new file mode 100644 index 00000000000..31752cf9b44 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/carbon.xml @@ -0,0 +1,656 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> + +<!-- + ~ Copyright 2017 WSO2 Inc. (http://wso2.com) + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ 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. + --> + +<!-- + This is the main server configuration file + + ${carbon.home} represents the carbon.home system property. + Other system properties can be specified in a similar manner. +--> +<Server xmlns="http://wso2.org/projects/carbon/carbon.xml"> + + <!-- + Product Name + --> + <Name>${product.name}</Name> + + <!-- + machine readable unique key to identify each product + --> + <ServerKey>${product.key}</ServerKey> + + <!-- + Product Version + --> + <Version>${product.version}</Version> + + <!-- + Host name or IP address of the machine hosting this server + e.g. www.wso2.org, 192.168.1.10 + This is will become part of the End Point Reference of the + services deployed on this server instance. + --> + <!--HostName>www.wso2.org</HostName--> + + <!-- + Host name to be used for the Carbon management console + --> + <!--MgtHostName>mgt.wso2.org</MgtHostName--> + + <!-- + The URL of the back end server. This is where the admin services are hosted and + will be used by the clients in the front end server. + This is required only for the Front-end server. This is used when seperating BE server from FE server + --> + <ServerURL>local:/${carbon.context}/services/</ServerURL> + <!-- + <ServerURL>https://${carbon.local.ip}:${carbon.management.port}${carbon.context}/services/</ServerURL> + --> + <!-- + The URL of the index page. This is where the user will be redirected after signing in to the + carbon server. + --> + <!-- IndexPageURL>/carbon/admin/index.jsp</IndexPageURL--> + + <!-- + For cApp deployment, we have to identify the roles that can be acted by the current server. + The following property is used for that purpose. Any number of roles can be defined here. + Regular expressions can be used in the role. + Ex : <Role>.*</Role> means this server can act any role + --> + <ServerRoles> + <Role>${default.server.role}</Role> + </ServerRoles> + + <!-- uncommnet this line to subscribe to a bam instance automatically --> + <!--<BamServerURL>https://bamhost:bamport/services/</BamServerURL>--> + + <!-- + The fully qualified name of the server + --> + <Package>org.wso2.carbon</Package> + + <!-- + Webapp context root of WSO2 Carbon management console. + --> + <WebContextRoot>/</WebContextRoot> + + <!-- + Proxy context path is a useful parameter to add a proxy path when a Carbon server is fronted by reverse proxy. In addtion + to the proxy host and proxy port this parameter allows you add a path component to external URLs. e.g. + URL of the Carbon server -> https://10.100.1.1:9443/carbon + URL of the reverse proxy -> https://prod.abc.com/appserver/carbon + + appserver - proxy context path. This specially required whenever you are generating URLs to displace in + Carbon UI components. + --> + <!-- + <MgtProxyContextPath></MgtProxyContextPath> + <ProxyContextPath></ProxyContextPath> + --> + + <!-- In-order to get the registry http Port from the back-end when the default http transport is not the same--> + <!--RegistryHttpPort>9763</RegistryHttpPort--> + + <!-- + Number of items to be displayed on a management console page. This is used at the + backend server for pagination of various items. + --> + <ItemsPerPage>15</ItemsPerPage> + + <!-- The endpoint URL of the cloud instance management Web service --> + <!--<InstanceMgtWSEndpoint>https://ec2.amazonaws.com/</InstanceMgtWSEndpoint>--> + + <!-- + Ports used by this server + --> + <Ports> + + <!-- Ports offset. This entry will set the value of the ports defined below to + the define value + Offset. + e.g. Offset=2 and HTTPS port=9443 will set the effective HTTPS port to 9445 + --> + <Offset>0</Offset> + + <!-- The JMX Ports --> + <JMX> + <!--The port RMI registry is exposed--> + <RMIRegistryPort>9999</RMIRegistryPort> + <!--The port RMI server should be exposed--> + <RMIServerPort>11111</RMIServerPort> + </JMX> + + <!-- Embedded LDAP server specific ports --> + <EmbeddedLDAP> + <!-- Port which embedded LDAP server runs --> + <LDAPServerPort>10389</LDAPServerPort> + <!-- Port which KDC (Kerberos Key Distribution Center) server runs --> + <KDCServerPort>8000</KDCServerPort> + </EmbeddedLDAP> + + <!-- + Override datasources JNDIproviderPort defined in bps.xml and datasources.properties files + --> + <!--<JNDIProviderPort>2199</JNDIProviderPort>--> + <!--Override receive port of thrift based entitlement service.--> + <ThriftEntitlementReceivePort>10500</ThriftEntitlementReceivePort> + + </Ports> + + <!-- + JNDI Configuration + --> + <JNDI> + <!-- + The fully qualified name of the default initial context factory + --> + <DefaultInitialContextFactory>org.wso2.carbon.tomcat.jndi.CarbonJavaURLContextFactory</DefaultInitialContextFactory> + <!-- + The restrictions that are done to various JNDI Contexts in a Multi-tenant environment + --> + <Restrictions> + <!-- + Contexts that will be available only to the super-tenant + --> + <!-- <SuperTenantOnly> + <UrlContexts> + <UrlContext> + <Scheme>foo</Scheme> + </UrlContext> + <UrlContext> + <Scheme>bar</Scheme> + </UrlContext> + </UrlContexts> + </SuperTenantOnly> --> + <!-- + Contexts that are common to all tenants + --> + <AllTenants> + <UrlContexts> + <UrlContext> + <Scheme>java</Scheme> + </UrlContext> + <!-- <UrlContext> + <Scheme>foo</Scheme> + </UrlContext> --> + </UrlContexts> + </AllTenants> + <!-- + All other contexts not mentioned above will be available on a per-tenant basis + (i.e. will not be shared among tenants) + --> + </Restrictions> + </JNDI> + + <!-- + Property to determine if the server is running an a cloud deployment environment. + This property should only be used to determine deployment specific details that are + applicable only in a cloud deployment, i.e when the server deployed *-as-a-service. + --> + <IsCloudDeployment>false</IsCloudDeployment> + + <!-- + Property to determine whether usage data should be collected for metering purposes + --> + <EnableMetering>false</EnableMetering> + + <!-- The Max time a thread should take for execution in seconds --> + <MaxThreadExecutionTime>600</MaxThreadExecutionTime> + + <!-- + A flag to enable or disable Ghost Deployer. By default this is set to false. That is + because the Ghost Deployer works only with the HTTP/S transports. If you are using + other transports, don't enable Ghost Deployer. + --> + <GhostDeployment> + <Enabled>false</Enabled> + </GhostDeployment> + + + <!-- + Eager loading or lazy loading is a design pattern commonly used in computer programming which + will initialize an object upon creation or load on-demand. In carbon, lazy loading is used to + load tenant when a request is received only. Similarly Eager loading is used to enable load + existing tenants after carbon server starts up. Using this feature, you will be able to include + or exclude tenants which are to be loaded when server startup. + + We can enable only one LoadingPolicy at a given time. + + 1. Tenant Lazy Loading + This is the default behaviour and enabled by default. With this policy, tenants are not loaded at + server startup, but loaded based on-demand (i.e when a request is received for a tenant). + The default tenant idle time is 30 minutes. + + 2. Tenant Eager Loading + This is by default not enabled. It can be be enabled by un-commenting the <EagerLoading> section. + The eager loading configurations supported are as below. These configurations can be given as the + value for <Include> element with eager loading. + (i)Load all tenants when server startup - * + (ii)Load all tenants except foo.com & bar.com - *,!foo.com,!bar.com + (iii)Load only foo.com & bar.com to be included - foo.com,bar.com + --> + <Tenant> + <LoadingPolicy> + <LazyLoading> + <IdleTime>30</IdleTime> + </LazyLoading> + <!-- <EagerLoading> + <Include>*,!foo.com,!bar.com</Include> + </EagerLoading>--> + </LoadingPolicy> + </Tenant> + + <!-- + Caching related configurations + --> + <Cache> + <!-- Default cache timeout in minutes --> + <DefaultCacheTimeout>15</DefaultCacheTimeout> + </Cache> + + <!-- + Axis2 related configurations + --> + <Axis2Config> + <!-- + Location of the Axis2 Services & Modules repository + + This can be a directory in the local file system, or a URL. + + e.g. + 1. /home/wso2wsas/repository/ - An absolute path + 2. repository - In this case, the path is relative to CARBON_HOME + 3. file:///home/wso2wsas/repository/ + 4. http://wso2wsas/repository/ + --> + <RepositoryLocation>${carbon.home}/repository/deployment/server/</RepositoryLocation> + + <!-- + Deployment update interval in seconds. This is the interval between repository listener + executions. + --> + <DeploymentUpdateInterval>15</DeploymentUpdateInterval> + + <!-- + Location of the main Axis2 configuration descriptor file, a.k.a. axis2.xml file + + This can be a file on the local file system, or a URL + + e.g. + 1. /home/repository/axis2.xml - An absolute path + 2. conf/axis2.xml - In this case, the path is relative to CARBON_HOME + 3. file:///home/carbon/repository/axis2.xml + 4. http://repository/conf/axis2.xml + --> + <ConfigurationFile>${carbon.home}/repository/conf/axis2/axis2.xml</ConfigurationFile> + + <!-- + ServiceGroupContextIdleTime, which will be set in ConfigurationContex + for multiple clients which are going to access the same ServiceGroupContext + Default Value is 30 Sec. + --> + <ServiceGroupContextIdleTime>30000</ServiceGroupContextIdleTime> + + <!-- + This repository location is used to crete the client side configuration + context used by the server when calling admin services. + --> + <ClientRepositoryLocation>${carbon.home}/repository/deployment/client/</ClientRepositoryLocation> + <!-- This axis2 xml is used in createing the configuration context by the FE server + calling to BE server --> + <clientAxis2XmlLocation>${carbon.home}/repository/conf/axis2/axis2_client.xml</clientAxis2XmlLocation> + <!-- If this parameter is set, the ?wsdl on an admin service will not give the admin service wsdl. --> + <HideAdminServiceWSDLs>true</HideAdminServiceWSDLs> + + <!--WARNING-Use With Care! Uncommenting bellow parameter would expose all AdminServices in HTTP transport. + With HTTP transport your credentials and data routed in public channels are vulnerable for sniffing attacks. + Use bellow parameter ONLY if your communication channels are confirmed to be secured by other means --> + <!--HttpAdminServices>*</HttpAdminServices--> + + </Axis2Config> + + <!-- + The default user roles which will be created when the server + is started up for the first time. + --> + <ServiceUserRoles> + <Role> + <Name>admin</Name> + <Description>Default Administrator Role</Description> + </Role> + <Role> + <Name>user</Name> + <Description>Default User Role</Description> + </Role> + </ServiceUserRoles> + + <!-- + Enable following config to allow Emails as usernames. + --> + <!--EnableEmailUserName>true</EnableEmailUserName--> + + <!-- + Security configurations + --> + <Security> + <!-- + KeyStore which will be used for encrypting/decrypting passwords + and other sensitive information. + --> + <KeyStore> + <!-- Keystore file location--> + <Location>${carbon.home}/repository/resources/security/wso2carbon.jks</Location> + <!-- Keystore type (JKS/PKCS12 etc.)--> + <Type>JKS</Type> + <!-- Keystore password--> + <Password>wso2carbon</Password> + <!-- Private Key alias--> + <KeyAlias>wso2carbon</KeyAlias> + <!-- Private Key password--> + <KeyPassword>wso2carbon</KeyPassword> + </KeyStore> + + <!-- + System wide trust-store which is used to maintain the certificates of all + the trusted parties. + --> + <TrustStore> + <!-- trust-store file location --> + <Location>${carbon.home}/repository/resources/security/client-truststore.jks</Location> + <!-- trust-store type (JKS/PKCS12 etc.) --> + <Type>JKS</Type> + <!-- trust-store password --> + <Password>wso2carbon</Password> + </TrustStore> + + <!-- + The Authenticator configuration to be used at the JVM level. We extend the + java.net.Authenticator to make it possible to authenticate to given servers and + proxies. + --> + <NetworkAuthenticatorConfig> + <!-- + Below is a sample configuration for a single authenticator. Please note that + all child elements are mandatory. Not having some child elements would lead to + exceptions at runtime. + --> + <!-- <Credential> --> + <!-- + the pattern that would match a subset of URLs for which this authenticator + would be used + --> + <!-- <Pattern>regularExpression</Pattern> --> + <!-- + the type of this authenticator. Allowed values are: + 1. server + 2. proxy + --> + <!-- <Type>proxy</Type> --> + <!-- the username used to log in to server/proxy --> + <!-- <Username>username</Username> --> + <!-- the password used to log in to server/proxy --> + <!-- <Password>password</Password> --> + <!-- </Credential> --> + </NetworkAuthenticatorConfig> + + <!-- + The Tomcat realm to be used for hosted Web applications. Allowed values are; + 1. UserManager + 2. Memory + + If this is set to 'UserManager', the realm will pick users & roles from the system's + WSO2 User Manager. If it is set to 'memory', the realm will pick users & roles from + CARBON_HOME/repository/conf/tomcat/tomcat-users.xml + --> + <TomcatRealm>UserManager</TomcatRealm> + + <!--Option to disable storing of tokens issued by STS--> + <DisableTokenStore>false</DisableTokenStore> + + <!-- + Security token store class name. If this is not set, default class will be + org.wso2.carbon.security.util.SecurityTokenStore + --> + <!--TokenStoreClassName>org.wso2.carbon.identity.sts.store.DBTokenStore</TokenStoreClassName--> + </Security> + + <!-- + The temporary work directory + --> + <WorkDirectory>${carbon.home}/tmp/work</WorkDirectory> + + <!-- + House-keeping configuration + --> + <HouseKeeping> + + <!-- + true - Start House-keeping thread on server startup + false - Do not start House-keeping thread on server startup. + The user will run it manually as and when he wishes. + --> + <AutoStart>true</AutoStart> + + <!-- + The interval in *minutes*, between house-keeping runs + --> + <Interval>10</Interval> + + <!-- + The maximum time in *minutes*, temp files are allowed to live + in the system. Files/directories which were modified more than + "MaxTempFileLifetime" minutes ago will be removed by the + house-keeping task + --> + <MaxTempFileLifetime>30</MaxTempFileLifetime> + </HouseKeeping> + + <!-- + Configuration for handling different types of file upload & other file uploading related + config parameters. + To map all actions to a particular FileUploadExecutor, use + <Action>*</Action> + --> + <FileUploadConfig> + <!-- + The total file upload size limit in MB + --> + <TotalFileSizeLimit>100</TotalFileSizeLimit> + + <Mapping> + <Actions> + <Action>keystore</Action> + <Action>certificate</Action> + <Action>*</Action> + </Actions> + <Class>org.wso2.carbon.ui.transports.fileupload.AnyFileUploadExecutor</Class> + </Mapping> + + <Mapping> + <Actions> + <Action>jarZip</Action> + </Actions> + <Class>org.wso2.carbon.ui.transports.fileupload.JarZipUploadExecutor</Class> + </Mapping> + <Mapping> + <Actions> + <Action>dbs</Action> + </Actions> + <Class>org.wso2.carbon.ui.transports.fileupload.DBSFileUploadExecutor</Class> + </Mapping> + <Mapping> + <Actions> + <Action>tools</Action> + </Actions> + <Class>org.wso2.carbon.ui.transports.fileupload.ToolsFileUploadExecutor</Class> + </Mapping> + <Mapping> + <Actions> + <Action>toolsAny</Action> + </Actions> + <Class>org.wso2.carbon.ui.transports.fileupload.ToolsAnyFileUploadExecutor</Class> + </Mapping> + </FileUploadConfig> + + <!-- + Processors which process special HTTP GET requests such as ?wsdl, ?policy etc. + + In order to plug in a processor to handle a special request, simply add an entry to this + section. + + The value of the Item element is the first parameter in the query string(e.g. ?wsdl) + which needs special processing + + The value of the Class element is a class which implements + org.wso2.carbon.transport.HttpGetRequestProcessor + --> + <HttpGetRequestProcessors> + <Processor> + <Item>info</Item> + <Class>org.wso2.carbon.core.transports.util.InfoProcessor</Class> + </Processor> + <Processor> + <Item>wsdl</Item> + <Class>org.wso2.carbon.core.transports.util.Wsdl11Processor</Class> + </Processor> + <Processor> + <Item>wsdl2</Item> + <Class>org.wso2.carbon.core.transports.util.Wsdl20Processor</Class> + </Processor> + <Processor> + <Item>xsd</Item> + <Class>org.wso2.carbon.core.transports.util.XsdProcessor</Class> + </Processor> + </HttpGetRequestProcessors> + + <!-- Deployment Synchronizer Configuration. t Enabled value to true when running with "svn based" dep sync. + In master nodes you need to set both AutoCommit and AutoCheckout to true + and in worker nodes set only AutoCheckout to true. + --> + <DeploymentSynchronizer> + <Enabled>false</Enabled> + <AutoCommit>false</AutoCommit> + <AutoCheckout>true</AutoCheckout> + <RepositoryType>svn</RepositoryType> + <SvnUrl>http://svnrepo.example.com/repos/</SvnUrl> + <SvnUser>username</SvnUser> + <SvnPassword>password</SvnPassword> + <SvnUrlAppendTenantId>true</SvnUrlAppendTenantId> + </DeploymentSynchronizer> + + <!-- Deployment Synchronizer Configuration. Uncomment the following section when running with "registry based" dep sync. + In master nodes you need to set both AutoCommit and AutoCheckout to true + and in worker nodes set only AutoCheckout to true. + --> + <!--<DeploymentSynchronizer> + <Enabled>true</Enabled> + <AutoCommit>false</AutoCommit> + <AutoCheckout>true</AutoCheckout> + </DeploymentSynchronizer>--> + + <!-- Mediation persistence configurations. Only valid if mediation features are available i.e. ESB --> + <!--<MediationConfig> + <LoadFromRegistry>false</LoadFromRegistry> + <SaveToFile>false</SaveToFile> + <Persistence>enabled</Persistence> + <RegistryPersistence>enabled</RegistryPersistence> + </MediationConfig>--> + + <!-- + Server intializing code, specified as implementation classes of org.wso2.carbon.core.ServerInitializer. + This code will be run when the Carbon server is initialized + --> + <ServerInitializers> + <!--<Initializer></Initializer>--> + </ServerInitializers> + + <!-- + Indicates whether the Carbon Servlet is required by the system, and whether it should be + registered + --> + <RequireCarbonServlet>${require.carbon.servlet}</RequireCarbonServlet> + + <!-- + Carbon H2 OSGI Configuration + By default non of the servers start. + name="web" - Start the web server with the H2 Console + name="webPort" - The port (default: 8082) + name="webAllowOthers" - Allow other computers to connect + name="webSSL" - Use encrypted (HTTPS) connections + name="tcp" - Start the TCP server + name="tcpPort" - The port (default: 9092) + name="tcpAllowOthers" - Allow other computers to connect + name="tcpSSL" - Use encrypted (SSL) connections + name="pg" - Start the PG server + name="pgPort" - The port (default: 5435) + name="pgAllowOthers" - Allow other computers to connect + name="trace" - Print additional trace information; for all servers + name="baseDir" - The base directory for H2 databases; for all servers + --> + <!--H2DatabaseConfiguration> + <property name="web" /> + <property name="webPort">8082</property> + <property name="webAllowOthers" /> + <property name="webSSL" /> + <property name="tcp" /> + <property name="tcpPort">9092</property> + <property name="tcpAllowOthers" /> + <property name="tcpSSL" /> + <property name="pg" /> + <property name="pgPort">5435</property> + <property name="pgAllowOthers" /> + <property name="trace" /> + <property name="baseDir">${carbon.home}</property> + </H2DatabaseConfiguration--> + <!--Disabling statistics reporter by default--> + <StatisticsReporterDisabled>true</StatisticsReporterDisabled> + + <!-- Enable accessing Admin Console via HTTP --> + <!-- EnableHTTPAdminConsole>true</EnableHTTPAdminConsole --> + + <!-- + Default Feature Repository of WSO2 Carbon. + --> + <FeatureRepository> + <RepositoryName>default repository</RepositoryName> + <RepositoryURL>${p2.repo.url}</RepositoryURL> + </FeatureRepository> + + <!-- + Configure API Management + --> + <APIManagement> + + <!--Uses the embedded API Manager by default. If you want to use an external + API Manager instance to manage APIs, configure below externalAPIManager--> + + <Enabled>true</Enabled> + + <!--Uncomment and configure API Gateway and + Publisher URLs to use external API Manager instance--> + + <!--ExternalAPIManager> + + <APIGatewayURL>http://localhost:8281</APIGatewayURL> + <APIPublisherURL>http://localhost:8281/publisher</APIPublisherURL> + + </ExternalAPIManager--> + + <LoadAPIContextsInServerStartup>true</LoadAPIContextsInServerStartup> + </APIManagement> +</Server> diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/etc/device-analytics-config-invalid.xml b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/etc/device-analytics-config-invalid.xml new file mode 100644 index 00000000000..99667d3cb54 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/etc/device-analytics-config-invalid.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!-- + ~ Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + ~ + ~ WSO2 Inc. licenses this file to you under the Apache License, + ~ Version 2.0 (the "License"); you may not use this file except + ~ in compliance with the License. + ~ you may obtain a copy of the License at + ~ + ~ 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. + --> + +<AnalyticsConfiguration> + <!-- + Server URL of the remote DAS/BAM/CEP server used to collect statistics. Must + be specified in protocol://hostname:port/ format. + + An event can also be published to multiple Receiver Groups each having 1 or more receivers. Receiver + Groups are delimited by curly braces whereas receivers are delimited by commas. + Ex - Multiple Receivers within a single group + tcp://localhost:7612/,tcp://localhost:7613/,tcp://localhost:7614/ + Ex - Multiple Receiver Groups with two receivers each + {tcp://localhost:7612/,tcp://localhost:7613},{tcp://localhost:7712/,tcp://localhost:7713/} + --> + <ReceiverServerUrl>tcp://localhost:7615</ReceiverServerUrl> + <AdminUsername>testuser</AdminUsername> + <AdminPassword>testuserpwd</AdminPassword> +</AnalyticsConfiguration> diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/etc/device-analytics-config.xml b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/etc/device-analytics-config.xml new file mode 100644 index 00000000000..8edea74667b --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/etc/device-analytics-config.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!-- + ~ Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + ~ + ~ WSO2 Inc. licenses this file to you under the Apache License, + ~ Version 2.0 (the "License"); you may not use this file except + ~ in compliance with the License. + ~ you may obtain a copy of the License at + ~ + ~ 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. + --> + +<AnalyticsConfiguration> + <!-- + Server URL of the remote DAS/BAM/CEP server used to collect statistics. Must + be specified in protocol://hostname:port/ format. + + An event can also be published to multiple Receiver Groups each having 1 or more receivers. Receiver + Groups are delimited by curly braces whereas receivers are delimited by commas. + Ex - Multiple Receivers within a single group + tcp://localhost:7612/,tcp://localhost:7613/,tcp://localhost:7614/ + Ex - Multiple Receiver Groups with two receivers each + {tcp://localhost:7612/,tcp://localhost:7613},{tcp://localhost:7712/,tcp://localhost:7713/} + --> + <Enabled>true</Enabled> + <ReceiverServerUrl>tcp://localhost:7615</ReceiverServerUrl> + <AdminUsername>testuser</AdminUsername> + <AdminPassword>testuserpwd</AdminPassword> +</AnalyticsConfiguration> diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/registry.xml b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/registry.xml new file mode 100644 index 00000000000..a226ae80a81 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/carbon-home/repository/conf/registry.xml @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> + +<!-- + ~ Copyright 2017 WSO2 Inc. (http://wso2.com) + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ 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. + --> +<wso2registry> + + <!-- + For details on configuring different config & governance registries see; + http://wso2.org/library/tutorials/2010/04/sharing-registry-space-across-multiple-product-instances + --> + + <currentDBConfig>wso2registry</currentDBConfig> + <readOnly>false</readOnly> + <enableCache>true</enableCache> + <registryRoot>/</registryRoot> + + <dbConfig name="wso2registry"> + <url>jdbc:h2:./target/databasetest/CARBON_TEST</url> + <!--userName>sa</userName> + <password>sa</password--> + <driverName>org.h2.Driver</driverName> + <maxActive>80</maxActive> + <maxWait>60000</maxWait> + <minIdle>5</minIdle> + </dbConfig> + + <versionResourcesOnChange>false</versionResourcesOnChange> + + <!-- NOTE: You can edit the options under "StaticConfiguration" only before the + startup. --> + <staticConfiguration> + <versioningProperties>true</versioningProperties> + <versioningComments>true</versioningComments> + <versioningTags>true</versioningTags> + <versioningRatings>true</versioningRatings> + </staticConfiguration> +</wso2registry> diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/testng.xml b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/testng.xml new file mode 100644 index 00000000000..0c032caff25 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/src/test/resources/testng.xml @@ -0,0 +1,29 @@ +<!-- + ~ Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + ~ + ~ WSO2 Inc. licenses this file to you under the Apache License, + ~ Version 2.0 (the "License"); you may not use this file except + ~ in compliance with the License. + ~ you may obtain a copy of the License at + ~ + ~ 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. + --> + +<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > + +<suite name="DeviceManagementExtensions"> + <parameter name="useDefaultListeners" value="false"/> + + <test name="Device Mgmt Analytics Data Publisher" preserve-order="true"> + <classes> + <class name="org.wso2.carbon.device.mgt.analytics.data.publisher.DataPublisherConfigTest"/> + </classes> + </test> +</suite> diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml index 4f7611215c6..87481961f43 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml @@ -300,11 +300,6 @@ <artifactId>org.wso2.carbon.apimgt.annotations</artifactId> <scope>provided</scope> </dependency> - <dependency> - <groupId>org.wso2.carbon.devicemgt</groupId> - <artifactId>org.wso2.carbon.device.mgt.analytics.dashboard</artifactId> - <scope>provided</scope> - </dependency> <dependency> <groupId>org.wso2.orbit.com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/BaseDeviceManagementTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/BaseDeviceManagementTest.java index 21261bef2b6..466d92becf2 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/BaseDeviceManagementTest.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/BaseDeviceManagementTest.java @@ -44,7 +44,6 @@ import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl; import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderServiceImpl; import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil; -import org.wso2.carbon.email.sender.core.service.EmailSenderServiceImpl; import org.wso2.carbon.registry.core.config.RegistryContext; import org.wso2.carbon.registry.core.exceptions.RegistryException; import org.wso2.carbon.registry.core.internal.RegistryDataHolder; @@ -85,7 +84,7 @@ public abstract class BaseDeviceManagementTest { NotificationManagementDAOFactory.init(dataSource); } - protected void initServices() throws DeviceManagementException, RegistryException { + private void initServices() throws DeviceManagementException, RegistryException, AxisFault { DeviceConfigurationManager.getInstance().initConfig(); DeviceManagementProviderService deviceMgtService = new DeviceManagementProviderServiceImpl(); DeviceManagementServiceComponent.notifyStartupListeners(); @@ -108,17 +107,10 @@ public abstract class BaseDeviceManagementTest { return context.getEmbeddedRegistryService(); } - private ConfigurationContextService getConfigContextService() throws RegistryException { - ConfigurationContext context = - null; - try { - context = ConfigurationContextFactory.createConfigurationContextFromFileSystem - ("src/test/resources/carbon-home/repository/conf/axis2/axis2.xml"); - } catch (AxisFault axisFault) { - axisFault.printStackTrace(); - } - ConfigurationContextService service = new ConfigurationContextService(context, null); - return service; + private ConfigurationContextService getConfigContextService() throws RegistryException, AxisFault { + ConfigurationContext context = ConfigurationContextFactory.createConfigurationContextFromFileSystem + ("src/test/resources/carbon-home/repository/conf/axis2/axis2.xml"); + return new ConfigurationContextService(context, null); } @BeforeClass @@ -183,47 +175,6 @@ public abstract class BaseDeviceManagementTest { } } - public void deleteData() { - Connection conn = null; - try { - conn = getDataSource().getConnection(); - conn.setAutoCommit(false); - String[] cleanupTables = new String[]{"DM_NOTIFICATION","DM_DEVICE_OPERATION_RESPONSE","DM_ENROLMENT_OP_MAPPING", "DM_CONFIG_OPERATION", - "DM_POLICY_OPERATION", "DM_COMMAND_OPERATION", "DM_PROFILE_OPERATION", "DM_DEVICE_GROUP_MAP", - "DM_GROUP", "DM_ENROLMENT", "DM_DEVICE_APPLICATION_MAPPING", - "DM_APPLICATION", "DM_DEVICE", "DM_DEVICE_TYPE"}; - for (String table : cleanupTables) { - this.cleanData(conn, table); - } - conn.commit(); - } catch (SQLException e) { - try { - if (conn != null) { - conn.rollback(); - } - } catch (SQLException e1) { - log.error("Error occurred while roll-backing the transaction", e); - } - String msg = "Error occurred while cleaning up temporary data generated during test execution"; - log.error(msg, e); - Assert.fail(msg, e); - } finally { - if (conn != null) { - try { - conn.close(); - } catch (SQLException e) { - log.warn("Error occurred while closing the connection", e); - } - } - } - } - - private void cleanData(Connection conn, String tableName) throws SQLException { - try (PreparedStatement stmt = conn.prepareStatement("DELETE FROM " + tableName)) { - stmt.execute(); - } - } - protected DataSource getDataSource() { return dataSource; } diff --git a/pom.xml b/pom.xml index 949aaa1ea96..4bf590b242d 100644 --- a/pom.xml +++ b/pom.xml @@ -402,6 +402,12 @@ </exclusion> </exclusions> </dependency> + <dependency> + <groupId>org.wso2.carbon</groupId> + <artifactId>org.wso2.carbon.securevault</artifactId> + <version>${carbon.kernel.version}</version> + <scope>test</scope> + </dependency> <dependency> <groupId>org.wso2.carbon.governance</groupId> <artifactId>org.wso2.carbon.governance.api</artifactId>