Merge branch 'application-mgt-new' into 'application-mgt-new'

Fix device-mgt operation log displaying issue

See merge request entgra/carbon-device-mgt!105
merge-requests/107/head^2
Inosh Perara 6 years ago
commit 06a8b3e1d8

@ -457,7 +457,7 @@ public interface DeviceManagementService {
String ifModifiedSince); String ifModifiedSince);
@PUT @PUT
@Path("/{type}/{id}/status") @Path("/{type}/{id}")
@ApiOperation( @ApiOperation(
produces = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON,
httpMethod = "GET", httpMethod = "GET",

@ -1,61 +0,0 @@
/*
* Copyright (c) 2016, 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.common.app.mgt;
public class DeviceApplicationMapping {
private String deviceIdentifier;
private String applicationUUID;
private String versionName;
private boolean installed;
public String getDeviceIdentifier() {
return deviceIdentifier;
}
public void setDeviceIdentifier(String deviceIdentifier) {
this.deviceIdentifier = deviceIdentifier;
}
public String getApplicationUUID() {
return applicationUUID;
}
public void setApplicationUUID(String applicationUUID) {
this.applicationUUID = applicationUUID;
}
public String getVersionName() {
return versionName;
}
public void setVersionName(String versionName) {
this.versionName = versionName;
}
public boolean isInstalled() {
return installed;
}
public void setInstalled(boolean installed) {
this.installed = installed;
}
}

@ -18,6 +18,7 @@
package org.wso2.carbon.device.mgt.core.app.mgt; package org.wso2.carbon.device.mgt.core.app.mgt;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.context.CarbonContext; import org.wso2.carbon.context.CarbonContext;
@ -28,10 +29,10 @@ import org.wso2.carbon.device.mgt.common.InvalidDeviceException;
import org.wso2.carbon.device.mgt.common.TransactionManagementException; import org.wso2.carbon.device.mgt.common.TransactionManagementException;
import org.wso2.carbon.device.mgt.common.app.mgt.Application; import org.wso2.carbon.device.mgt.common.app.mgt.Application;
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException; import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
import org.wso2.carbon.device.mgt.common.app.mgt.DeviceApplicationMapping;
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity; import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException; import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
import org.wso2.carbon.device.mgt.core.DeviceManagementConstants;
import org.wso2.carbon.device.mgt.core.app.mgt.config.AppManagementConfig; import org.wso2.carbon.device.mgt.core.app.mgt.config.AppManagementConfig;
import org.wso2.carbon.device.mgt.core.dao.ApplicationDAO; import org.wso2.carbon.device.mgt.core.dao.ApplicationDAO;
import org.wso2.carbon.device.mgt.core.dao.ApplicationMappingDAO; import org.wso2.carbon.device.mgt.core.dao.ApplicationMappingDAO;
@ -76,13 +77,13 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
@Override @Override
public void updateApplicationStatus(DeviceIdentifier deviceId, Application application, public void updateApplicationStatus(DeviceIdentifier deviceId, Application application,
String status) throws ApplicationManagementException { String status) throws ApplicationManagementException {
} }
@Override @Override
public String getApplicationStatus(DeviceIdentifier deviceId, public String getApplicationStatus(DeviceIdentifier deviceId,
Application application) throws ApplicationManagementException { Application application) throws ApplicationManagementException {
return null; return null;
} }
@ -193,96 +194,21 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
} }
} }
private boolean contains(DeviceApplicationMapping deviceApp, List<Application> installedApps) {
boolean installed = false;
for (Application app : installedApps) {
if (app.getApplicationIdentifier().equals(deviceApp.getApplicationUUID()) && app.getVersion().equals(deviceApp.getVersionName())) {
installed = true;
break;
}
}
return installed;
}
@Override @Override
public void updateApplicationListInstalledInDevice( public void updateApplicationListInstalledInDevice(
DeviceIdentifier deviceIdentifier, DeviceIdentifier deviceIdentifier,
List<Application> applications) throws ApplicationManagementException { List<Application> applications) throws ApplicationManagementException {
if (log.isDebugEnabled()) {
try { log.debug("Updating application list for device: " + deviceIdentifier.toString());
DeviceManagementDAOFactory.beginTransaction();
List<DeviceApplicationMapping> installedDeviceApps = new ArrayList<>();
List<DeviceApplicationMapping> uninstalledDeviceApps = new ArrayList<>();
List<DeviceApplicationMapping> deviceApps = applicationMappingDAO.getApplicationsOfDevice(deviceIdentifier.getId(), false);
for (DeviceApplicationMapping deviceApp : deviceApps) {
if (contains(deviceApp, applications)) {
if (!deviceApp.isInstalled()) {
// device app mapping is recorded as not installed (i.e. install app operation has been sent to device)
// as the app list sent from the device contains this, app is now installed in the device
// so we can mark the device app mapping entry as installed.
deviceApp.setInstalled(true);
applicationMappingDAO.updateDeviceApplicationMapping(deviceApp);
}
} else {
if (deviceApp.isInstalled()) {
// we have a device-app mapping in the installed state in the db. but app is not installed in the device.
// which implies that a previously installed app has been uninstalled from the device. so we have to remove the device app mapping
applicationMappingDAO.removeApplicationMapping(deviceApp);
}
}
}
DeviceManagementDAOFactory.commitTransaction();
} catch (DeviceManagementDAOException | TransactionManagementException e) {
String msg = "Failed to update application list of the device " + deviceIdentifier;
throw new ApplicationManagementException(msg, e);
} }
}
public void updateApplicationListInstalledInDeviceDep(
DeviceIdentifier deviceIdentifier,
List<Application> applications) throws ApplicationManagementException {
try {
DeviceManagementDAOFactory.beginTransaction();
List<DeviceApplicationMapping> installedDeviceApps = new ArrayList<>();
List<DeviceApplicationMapping> uninstalledDeviceApps = new ArrayList<>();
List<DeviceApplicationMapping> deviceApps = applicationMappingDAO.getApplicationsOfDevice(deviceIdentifier.getId(), false);
for (DeviceApplicationMapping deviceApp : deviceApps) {
if (contains(deviceApp, applications)) {
// if device app is pending mark device app as installed
if (!deviceApp.isInstalled()) {
deviceApp.setInstalled(true);
applicationMappingDAO.updateDeviceApplicationMapping(deviceApp);
}
} else {
if (deviceApp.isInstalled()) {
// this means we have a device-app mapping in the installed state in the db. but app is not installed in the device.
// which implies that a previously installed app has been uninstalled from the device. so we have to remove the device app mapping
applicationMappingDAO.removeApplicationMapping(deviceApp);
}
}
}
DeviceManagementDAOFactory.commitTransaction();
} catch (DeviceManagementDAOException | TransactionManagementException e) {
String msg = "Failed to update application list of the device " + deviceIdentifier;
throw new ApplicationManagementException(msg, e);
}
List<Application> installedAppList = getApplicationListForDevice(deviceIdentifier); List<Application> installedAppList = getApplicationListForDevice(deviceIdentifier);
try { try {
Device device = DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().getDevice(deviceIdentifier, Device device = DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().getDevice(deviceIdentifier,
false); false);
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
if (log.isDebugEnabled()) {
log.debug("Device:" + device.getId() + ":identifier:" + deviceIdentifier.getId());
}
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("num of apps installed:" + installedAppList.size()); log.debug("Number of apps installed:" + installedAppList.size());
} }
List<Application> appsToAdd = new ArrayList<>(); List<Application> appsToAdd = new ArrayList<>();
List<Integer> appIdsToRemove = new ArrayList<>(installedAppList.size()); List<Integer> appIdsToRemove = new ArrayList<>(installedAppList.size());
@ -303,6 +229,15 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
List<Application> applicationsToMap = new ArrayList<>(); List<Application> applicationsToMap = new ArrayList<>();
for (Application application : applications) { for (Application application : applications) {
// Adding N/A if application doesn't have a version. Also truncating the application version,
// if length of the version is greater than maximum allowed length.
if (application.getVersion() == null) {
application.setVersion("N/A");
} else if (application.getVersion().length() >
DeviceManagementConstants.OperationAttributes.APPLIST_VERSION_MAX_LENGTH) {
application.setVersion(StringUtils.abbreviate(application.getVersion(),
DeviceManagementConstants.OperationAttributes.APPLIST_VERSION_MAX_LENGTH));
}
if (!installedAppList.contains(application)) { if (!installedAppList.contains(application)) {
installedApp = applicationDAO.getApplication(application.getApplicationIdentifier(), installedApp = applicationDAO.getApplication(application.getApplicationIdentifier(),
application.getVersion(), tenantId); application.getVersion(), tenantId);
@ -335,24 +270,34 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("num of remove app Ids:" + appIdsToRemove.size()); log.debug("num of remove app Ids:" + appIdsToRemove.size());
} }
DeviceManagementDAOFactory.commitTransaction(); DeviceManagementDAOFactory.commitTransaction();
} catch (DeviceManagementDAOException e) { } catch (DeviceManagementDAOException e) {
DeviceManagementDAOFactory.rollbackTransaction(); DeviceManagementDAOFactory.rollbackTransaction();
throw new ApplicationManagementException("Error occurred saving application list to the device", e); String msg = "Error occurred saving application list of the device " + deviceIdentifier.toString();
log.error(msg, e);
throw new ApplicationManagementException(msg, e);
} catch (TransactionManagementException e) { } catch (TransactionManagementException e) {
throw new ApplicationManagementException("Error occurred while initializing transaction", e); String msg = "Error occurred while initializing transaction for saving application list to the device "
+ deviceIdentifier.toString();
log.error(msg, e);
throw new ApplicationManagementException(msg, e);
} catch (DeviceManagementException e) { } catch (DeviceManagementException e) {
throw new ApplicationManagementException("Error occurred obtaining the device object.", e); String msg = "Error occurred obtaining the device object for device " + deviceIdentifier.toString();
log.error(msg, e);
throw new ApplicationManagementException(msg, e);
} catch (Exception e) {
String msg = "Exception occurred saving application list of the device " + deviceIdentifier.toString();
log.error(msg, e);
throw new ApplicationManagementException(msg, e);
} finally { } finally {
DeviceManagementDAOFactory.closeConnection(); DeviceManagementDAOFactory.closeConnection();
} }
} }
@Override @Override
public List<Application> getApplicationListForDevice( public List<Application> getApplicationListForDevice(DeviceIdentifier deviceId)
DeviceIdentifier deviceId) throws ApplicationManagementException { throws ApplicationManagementException {
Device device = null; Device device;
try { try {
device = DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().getDevice(deviceId, device = DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().getDevice(deviceId,
false); false);
@ -363,19 +308,27 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
if (device == null) { if (device == null) {
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("No device is found upon the device identifier '" + deviceId.getId() + log.debug("No device is found upon the device identifier '" + deviceId.getId() +
"' and type '" + deviceId.getType() + "'. Therefore returning null"); "' and type '" + deviceId.getType() + "'. Therefore returning empty app list");
} }
return null; return new ArrayList<>();
} }
try { try {
DeviceManagementDAOFactory.openConnection(); DeviceManagementDAOFactory.openConnection();
return applicationDAO.getInstalledApplications(device.getId(), device.getEnrolmentInfo().getId()); return applicationDAO.getInstalledApplications(device.getId(), device.getEnrolmentInfo().getId());
} catch (DeviceManagementDAOException e) { } catch (DeviceManagementDAOException e) {
throw new ApplicationManagementException("Error occurred while fetching the Application List of '" + String msg = "Error occurred while fetching the Application List of device " + deviceId.toString();
deviceId.getType() + "' device carrying the identifier'" + deviceId.getId(), e); log.error(msg, e);
throw new ApplicationManagementException(msg, e);
} catch (SQLException e) { } catch (SQLException e) {
throw new ApplicationManagementException("Error occurred while opening a connection to the data source", e); String msg = "Error occurred while opening a connection to the data source to get application " +
} finally { "list of the device " + deviceId.toString();
log.error(msg, e);
throw new ApplicationManagementException(msg, e);
} catch (Exception e) {
String msg = "Exception occurred getting application list of the device " + deviceId.toString();
log.error(msg, e);
throw new ApplicationManagementException(msg, e);
} finally {
DeviceManagementDAOFactory.closeConnection(); DeviceManagementDAOFactory.closeConnection();
} }
} }

@ -19,7 +19,6 @@
package org.wso2.carbon.device.mgt.core.dao; package org.wso2.carbon.device.mgt.core.dao;
import org.wso2.carbon.device.mgt.common.app.mgt.Application; import org.wso2.carbon.device.mgt.common.app.mgt.Application;
import org.wso2.carbon.device.mgt.common.app.mgt.DeviceApplicationMapping;
import java.util.List; import java.util.List;
@ -35,12 +34,4 @@ public interface ApplicationMappingDAO {
void removeApplicationMapping(int deviceId, int enrolmentId, List<Integer> appIdList, int tenantId) void removeApplicationMapping(int deviceId, int enrolmentId, List<Integer> appIdList, int tenantId)
throws DeviceManagementDAOException; throws DeviceManagementDAOException;
int addDeviceApplicationMapping(DeviceApplicationMapping deviceApp) throws DeviceManagementDAOException;
void updateDeviceApplicationMapping(DeviceApplicationMapping deviceApp) throws DeviceManagementDAOException;
List<DeviceApplicationMapping> getApplicationsOfDevice(String deviceIdentifier, boolean installed) throws DeviceManagementDAOException;
void removeApplicationMapping(DeviceApplicationMapping deviceApp) throws DeviceManagementDAOException;
} }

@ -21,23 +21,18 @@ package org.wso2.carbon.device.mgt.core.dao.impl;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.mgt.common.app.mgt.Application; import org.wso2.carbon.device.mgt.common.app.mgt.Application;
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
import org.wso2.carbon.device.mgt.common.app.mgt.DeviceApplicationMapping;
import org.wso2.carbon.device.mgt.core.dao.ApplicationMappingDAO; import org.wso2.carbon.device.mgt.core.dao.ApplicationMappingDAO;
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException; import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory; import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil; import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
import org.wso2.carbon.device.mgt.core.dto.operation.mgt.ProfileOperation;
import java.io.*; import java.io.*;
import java.sql.*; import java.sql.*;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Properties;
public class ApplicationMappingDAOImpl implements ApplicationMappingDAO { public class ApplicationMappingDAOImpl implements ApplicationMappingDAO {
private static Log log = LogFactory.getLog(ApplicationMappingDAOImpl.class); private static final Log log = LogFactory.getLog(ApplicationMappingDAOImpl.class);
@Override @Override
public int addApplicationMapping(int deviceId, int applicationId, public int addApplicationMapping(int deviceId, int applicationId,
@ -181,128 +176,6 @@ public class ApplicationMappingDAOImpl implements ApplicationMappingDAO {
} }
} }
@Override
public int addDeviceApplicationMapping(DeviceApplicationMapping deviceApp) throws
DeviceManagementDAOException {
Connection conn;
PreparedStatement stmt = null;
ResultSet rs = null;
int mappingId = -1;
try {
conn = getConnection();
String sql = "SELECT ID FROM DM_DEVICE_APPLICATION_MAPPING WHERE DEVICE_IDENTIFIER = ? AND " +
"APPLICATION_UUID = ? AND VERSION_NAME = ?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, deviceApp.getDeviceIdentifier());
stmt.setString(2, deviceApp.getApplicationUUID());
stmt.setString(3, deviceApp.getVersionName());
rs = stmt.executeQuery();
if (!rs.next()) {
sql = "INSERT INTO DM_DEVICE_APPLICATION_MAPPING (DEVICE_IDENTIFIER, APPLICATION_UUID, VERSION_NAME," +
"INSTALLED) VALUES (?, ?, ?, ?)";
stmt = conn.prepareStatement(sql, new String[]{"id"});
stmt.setString(1, deviceApp.getDeviceIdentifier());
stmt.setString(2, deviceApp.getApplicationUUID());
stmt.setString(3, deviceApp.getVersionName());
stmt.setBoolean(4, deviceApp.isInstalled());
stmt.executeUpdate();
rs = stmt.getGeneratedKeys();
if (rs.next()) {
mappingId = rs.getInt(1);
}
return mappingId;
} else {
log.warn("Device[" + deviceApp.getDeviceIdentifier() + "] application[" + deviceApp.getApplicationUUID() + "] mapping already " +
"exists in the DB");
return -1;
}
} catch (SQLException e) {
throw new DeviceManagementDAOException("Error occurred while adding device application mapping to DB", e);
} finally {
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
}
}
@Override
public void updateDeviceApplicationMapping(DeviceApplicationMapping deviceApp) throws
DeviceManagementDAOException {
Connection conn;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = getConnection();
String sql = "UPDATE DM_DEVICE_APPLICATION_MAPPING " +
"SET INSTALLED = ? " +
"WHERE DEVICE_IDENTIFIER = ? AND APPLICATION_UUID = ? AND VERSION_NAME = ?";
stmt = conn.prepareStatement(sql);
stmt.setBoolean(1, deviceApp.isInstalled());
stmt.setString(2, deviceApp.getDeviceIdentifier());
stmt.setString(3, deviceApp.getApplicationUUID());
stmt.setString(3, deviceApp.getVersionName());
stmt.executeUpdate();
} catch (SQLException e) {
throw new DeviceManagementDAOException("Error occurred while adding device application mapping to DB", e);
} finally {
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
}
}
@Override
public List<DeviceApplicationMapping> getApplicationsOfDevice(String deviceIdentifier, boolean installed) throws
DeviceManagementDAOException {
List<DeviceApplicationMapping> applications = new ArrayList<>();
Connection conn;
PreparedStatement stmt = null;
ResultSet rs = null;
int mappingId = -1;
try {
conn = getConnection();
String sql = "SELECT APPLICATION_UUID, VERSION_NAME FROM DM_DEVICE_APPLICATION_MAPPING WHERE DEVICE_IDENTIFIER = ? AND INSTALLED = ?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, deviceIdentifier);
stmt.setBoolean(2, installed);
rs = stmt.executeQuery();
while (rs.next()) {
DeviceApplicationMapping deviceApp = new DeviceApplicationMapping();
deviceApp.setDeviceIdentifier(deviceIdentifier);
deviceApp.setApplicationUUID(rs.getString(1));
deviceApp.setVersionName(rs.getString(2));
deviceApp.setInstalled(true);
applications.add(deviceApp);
}
return applications;
} catch (SQLException e) {
throw new DeviceManagementDAOException("Error occurred while adding device application mapping to DB", e);
} finally {
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
}
}
@Override
public void removeApplicationMapping(DeviceApplicationMapping deviceApp) throws DeviceManagementDAOException {
Connection conn;
PreparedStatement stmt = null;
try {
String sql = "DELETE FROM DM_DEVICE_APPLICATION_MAPPING WHERE DEVICE_IDENTIFIER = ? AND " +
"APPLICATION_UUID = ? AND VERSION_NAME = ?";
conn = this.getConnection();
stmt = conn.prepareStatement(sql);
stmt.setString(1, deviceApp.getDeviceIdentifier());
stmt.setString(2, deviceApp.getApplicationUUID());
stmt.setString(3, deviceApp.getVersionName());
stmt.executeUpdate();
} catch (SQLException e) {
throw new DeviceManagementDAOException("Error occurred while removing device application mapping", e);
} finally {
DeviceManagementDAOUtil.cleanupResources(stmt, null);
}
}
private Connection getConnection() throws SQLException { private Connection getConnection() throws SQLException {
return DeviceManagementDAOFactory.getConnection(); return DeviceManagementDAOFactory.getConnection();
} }

@ -149,9 +149,6 @@ public class DeviceManagementServiceComponent {
@SuppressWarnings("unused") @SuppressWarnings("unused")
protected void activate(ComponentContext componentContext) { protected void activate(ComponentContext componentContext) {
log.info("CALLING Crazy .............");
try { try {
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("Initializing device management core bundle"); log.debug("Initializing device management core bundle");

@ -37,11 +37,6 @@ import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
import org.wso2.carbon.device.mgt.common.DeviceManagementException; import org.wso2.carbon.device.mgt.common.DeviceManagementException;
import org.wso2.carbon.device.mgt.common.DeviceManager; import org.wso2.carbon.device.mgt.common.DeviceManager;
import org.wso2.carbon.device.mgt.common.DeviceNotFoundException; import org.wso2.carbon.device.mgt.common.DeviceNotFoundException;
import org.wso2.carbon.device.mgt.common.app.mgt.DeviceApplicationMapping;
import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationExecutionFailedException;
import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber;
import org.wso2.carbon.device.mgt.core.dao.ApplicationMappingDAO;
import org.wso2.carbon.device.mgt.core.dto.DeviceTypeServiceIdentifier;
import org.wso2.carbon.device.mgt.common.DeviceNotification; import org.wso2.carbon.device.mgt.common.DeviceNotification;
import org.wso2.carbon.device.mgt.common.DevicePropertyNotification; import org.wso2.carbon.device.mgt.common.DevicePropertyNotification;
import org.wso2.carbon.device.mgt.common.DeviceTypeNotFoundException; import org.wso2.carbon.device.mgt.common.DeviceTypeNotFoundException;
@ -74,6 +69,8 @@ import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException; import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManager; import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManager;
import org.wso2.carbon.device.mgt.common.policy.mgt.PolicyMonitoringManager; import org.wso2.carbon.device.mgt.common.policy.mgt.PolicyMonitoringManager;
import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationExecutionFailedException;
import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber;
import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy; import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy;
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService; import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
import org.wso2.carbon.device.mgt.core.DeviceManagementConstants; import org.wso2.carbon.device.mgt.core.DeviceManagementConstants;
@ -92,6 +89,7 @@ import org.wso2.carbon.device.mgt.core.device.details.mgt.dao.DeviceDetailsDAO;
import org.wso2.carbon.device.mgt.core.device.details.mgt.dao.DeviceDetailsMgtDAOException; import org.wso2.carbon.device.mgt.core.device.details.mgt.dao.DeviceDetailsMgtDAOException;
import org.wso2.carbon.device.mgt.core.device.details.mgt.impl.DeviceInformationManagerImpl; import org.wso2.carbon.device.mgt.core.device.details.mgt.impl.DeviceInformationManagerImpl;
import org.wso2.carbon.device.mgt.core.dto.DeviceType; import org.wso2.carbon.device.mgt.core.dto.DeviceType;
import org.wso2.carbon.device.mgt.core.dto.DeviceTypeServiceIdentifier;
import org.wso2.carbon.device.mgt.core.geo.GeoCluster; import org.wso2.carbon.device.mgt.core.geo.GeoCluster;
import org.wso2.carbon.device.mgt.core.geo.geoHash.GeoCoordinate; import org.wso2.carbon.device.mgt.core.geo.geoHash.GeoCoordinate;
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder; import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
@ -134,7 +132,6 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
private DeviceTypeDAO deviceTypeDAO; private DeviceTypeDAO deviceTypeDAO;
private EnrollmentDAO enrollmentDAO; private EnrollmentDAO enrollmentDAO;
private ApplicationDAO applicationDAO; private ApplicationDAO applicationDAO;
private ApplicationMappingDAO applicationMappingDAO;
private DeviceManagementPluginRepository pluginRepository; private DeviceManagementPluginRepository pluginRepository;
public DeviceManagementProviderServiceImpl() { public DeviceManagementProviderServiceImpl() {
@ -151,7 +148,6 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
this.applicationDAO = DeviceManagementDAOFactory.getApplicationDAO(); this.applicationDAO = DeviceManagementDAOFactory.getApplicationDAO();
this.deviceTypeDAO = DeviceManagementDAOFactory.getDeviceTypeDAO(); this.deviceTypeDAO = DeviceManagementDAOFactory.getDeviceTypeDAO();
this.enrollmentDAO = DeviceManagementDAOFactory.getEnrollmentDAO(); this.enrollmentDAO = DeviceManagementDAOFactory.getEnrollmentDAO();
this.applicationMappingDAO = DeviceManagementDAOFactory.getApplicationMappingDAO();
} }
@Override @Override
@ -2582,20 +2578,6 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
pullNotificationSubscriber.execute(deviceIdentifier, operation); pullNotificationSubscriber.execute(deviceIdentifier, operation);
} }
public void addDeviceApplicationMapping(DeviceApplicationMapping deviceApp) throws DeviceManagementException {
try {
DeviceManagementDAOFactory.openConnection();
applicationMappingDAO.addDeviceApplicationMapping(deviceApp);
} catch (DeviceManagementDAOException e) {
throw new DeviceManagementException("Error occurred while adding device application mapping for device "
+ deviceApp.getDeviceIdentifier() + " and application " + deviceApp.getApplicationUUID(), e);
} catch (SQLException e) {
throw new DeviceManagementException("Error occurred while opening a connection to the data source", e);
} finally {
DeviceManagementDAOFactory.closeConnection();
}
}
/** /**
* Returns all the device-info including location of the given device. * Returns all the device-info including location of the given device.
*/ */

@ -24,10 +24,6 @@ from withinStream[isWithin == false]
select id, owner, latitude, longitude,timeStamp, type, speed, heading, "ALERTED" as state, str:concat("The ", type, " device `", id, "` of $owner is outside $areaName area!") as information, true as notify select id, owner, latitude, longitude,timeStamp, type, speed, heading, "ALERTED" as state, str:concat("The ", type, " device `", id, "` of $owner is outside $areaName area!") as information, true as notify
insert into dataOut; insert into dataOut;
from dataIn[id != "$deviceId"]
select id , latitude, longitude,timeStamp, type, speed, heading ,eventId , "NORMAL" as state, "" as information
insert into dataOut;
from withinStream[isWithin == true] from withinStream[isWithin == true]
select id, owner, latitude, longitude,timeStamp, type, speed, heading, "NORMAL" as state, "" as information, false as notify select id, owner, latitude, longitude,timeStamp, type, speed, heading, "NORMAL" as state, "" as information, false as notify
insert into dataOut; insert into dataOut;

@ -19,10 +19,6 @@ from dataIn[speed >= $speedAlertValue and id == "$deviceId" and owner == "$owner
select id, owner, latitude, longitude, timeStamp, type, speed, heading, "ALERTED" as state, str:concat("The ", type, " device `", id, "` of $owner is traveling at ", math:round(speed), "km/h and is exceeding the $speedAlertValuekm/h speed limit") as information, true as notify select id, owner, latitude, longitude, timeStamp, type, speed, heading, "ALERTED" as state, str:concat("The ", type, " device `", id, "` of $owner is traveling at ", math:round(speed), "km/h and is exceeding the $speedAlertValuekm/h speed limit") as information, true as notify
insert into dataOut; insert into dataOut;
from dataIn[id != "$deviceId"]
select id , latitude, longitude,timeStamp, type, speed, heading ,eventId , "NORMAL" as state, "" as information
insert into dataOut;
from dataIn[speed < $speedAlertValue and id == "$deviceId" and owner == "$owner"] from dataIn[speed < $speedAlertValue and id == "$deviceId" and owner == "$owner"]
select id, owner, latitude, longitude, timeStamp, type, speed, heading, "NORMAL" as state, str:concat("The ", type, " device `", id, "` of $owner is travailing at normal speed.") as information, false as notify select id, owner, latitude, longitude, timeStamp, type, speed, heading, "NORMAL" as state, str:concat("The ", type, " device `", id, "` of $owner is travailing at normal speed.") as information, false as notify
insert into dataOut; insert into dataOut;

@ -468,7 +468,7 @@
--> -->
<FileUploadConfig> <FileUploadConfig>
<!-- <!--
The total file upllengthsize limit in MB The total file upload size limit in MB
--> -->
<TotalFileSizeLimit>100</TotalFileSizeLimit> <TotalFileSizeLimit>100</TotalFileSizeLimit>

@ -62,7 +62,7 @@ org.eclipse.osgi/defaultprofile/logfilename =
# requested. # requested.
org.eclipse.osgi/defaultprofile/logsynchronously = false org.eclipse.osgi/defaultprofile/logsynchronously = false
# Specify the length of the default profile implementation log buffer. # Specify the size of the default profile implementation log buffer.
org.eclipse.osgi/defaultprofile/buffersize = 256 org.eclipse.osgi/defaultprofile/buffersize = 256
#### Monitoring settings #### Monitoring settings

@ -47,7 +47,7 @@
<!-- fileEncoding Encoding to be used to read static resources --> <!-- fileEncoding Encoding to be used to read static resources -->
<!-- [platform default] --> <!-- [platform default] -->
<!-- --> <!-- -->
<!-- input Input buflengthsize (in bytes) when reading --> <!-- input Input buffer size (in bytes) when reading -->
<!-- resources to be served. [2048] --> <!-- resources to be served. [2048] -->
<!-- --> <!-- -->
<!-- listings Should directory listings be produced if there --> <!-- listings Should directory listings be produced if there -->
@ -56,7 +56,7 @@
<!-- entries can be slow and may consume --> <!-- entries can be slow and may consume -->
<!-- significant proportions of server resources. --> <!-- significant proportions of server resources. -->
<!-- --> <!-- -->
<!-- output Output buflengthsize (in bytes) when writing --> <!-- output Output buffer size (in bytes) when writing -->
<!-- resources to be served. [2048] --> <!-- resources to be served. [2048] -->
<!-- --> <!-- -->
<!-- readonly Is this context "read only", so HTTP --> <!-- readonly Is this context "read only", so HTTP -->
@ -67,7 +67,7 @@
<!-- contents. [null] --> <!-- contents. [null] -->
<!-- --> <!-- -->
<!-- sendfileSize If the connector used supports sendfile, this --> <!-- sendfileSize If the connector used supports sendfile, this -->
<!-- represents the minimal flengthsize in KB for --> <!-- represents the minimal file size in KB for -->
<!-- which sendfile will be used. Use a negative --> <!-- which sendfile will be used. Use a negative -->
<!-- value to always disable sendfile. [48] --> <!-- value to always disable sendfile. [48] -->
<!-- --> <!-- -->

@ -45,18 +45,12 @@ if (!user) {
} else { } else {
queryString = "?" + queryString; queryString = "?" + queryString;
} }
<<<<<<< Updated upstream
var deviceType = request.getParameter("deviceType"); // need a better solution here var deviceType = request.getParameter("deviceType"); // need a better solution here
deviceTypeConfig = utility.getDeviceTypeConfig(deviceType); deviceTypeConfig = utility.getDeviceTypeConfig(deviceType);
if (deviceTypeConfig && deviceTypeConfig.deviceType.downloadAgentUri) { if (deviceTypeConfig && deviceTypeConfig.deviceType.downloadAgentUri) {
=======
var type = request.getParameter("type"); // need a better solution here
deviceTypeConfig = utility.getDeviceTypeConfig(type);
if (deviceTypeConfig && deviceTypeConfig.type.downloadAgentUri) {
>>>>>>> Stashed changes
hearders = [{"name": constants["ACCEPT_IDENTIFIER"], "value": constants["APPLICATION_ZIP"]}]; hearders = [{"name": constants["ACCEPT_IDENTIFIER"], "value": constants["APPLICATION_ZIP"]}];
sketchDownloadEndPoint = devicemgtProps["httpsURL"] + "/" + deviceTypeConfig.type.downloadAgentUri; sketchDownloadEndPoint = devicemgtProps["httpsURL"] + "/" + deviceTypeConfig.deviceType.downloadAgentUri;
serviceInvokers.HttpClient.get(sketchDownloadEndPoint + queryString, function (responsePayload, responseHeaders) { serviceInvokers.HttpClient.get(sketchDownloadEndPoint + queryString, function (responsePayload, responseHeaders) {
if (responseHeaders) { if (responseHeaders) {
for (var i = 0; i < responseHeaders.length; i++) { for (var i = 0; i < responseHeaders.length; i++) {
@ -115,18 +109,18 @@ if (!user) {
} else if (uriMatcher.match("/{context}/api/devices/types")) { } else if (uriMatcher.match("/{context}/api/devices/types")) {
result = deviceModule.listDeviceTypes(); result = deviceModule.listDeviceTypes();
} else if (uriMatcher.match("/{context}/api/devices/{type}/{deviceId}/remove")) { } else if (uriMatcher.match("/{context}/api/devices/{deviceType}/{deviceId}/remove")) {
var elements = uriMatcher.elements(); var elements = uriMatcher.elements();
var deviceId = elements.deviceId; var deviceId = elements.deviceId;
var type = elements.type; var deviceType = elements.deviceType;
result = deviceModule.removeDevice(type, deviceId); result = deviceModule.removeDevice(deviceType, deviceId);
} else if (uriMatcher.match("/{context}/api/devices/{type}/{deviceId}/update")) { } else if (uriMatcher.match("/{context}/api/devices/{deviceType}/{deviceId}/update")) {
var elements = uriMatcher.elements(); var elements = uriMatcher.elements();
var deviceId = elements.deviceId; var deviceId = elements.deviceId;
var type = elements.type; var deviceType = elements.deviceType;
var deviceName = request.getParameter("name"); var deviceName = request.getParameter("name");
result = deviceModule.updateDevice(type, deviceId, deviceName); result = deviceModule.updateDevice(deviceType, deviceId, deviceName);
} else if (uriMatcher.match("/{context}/api/devices")) { } else if (uriMatcher.match("/{context}/api/devices")) {
var url = request.getParameter("url"); var url = request.getParameter("url");
var draw = request.getParameter("draw"); var draw = request.getParameter("draw");

@ -26,7 +26,7 @@ var serviceInvokers = require("/app/modules/oauth/token-protected-service-invoke
var devicemgtProps = require("/app/modules/conf-reader/main.js")["conf"]; var devicemgtProps = require("/app/modules/conf-reader/main.js")["conf"];
if (uriMatcher.match("/{context}/api/operation/paginate")) { if (uriMatcher.match("/{context}/api/operation/paginate")) {
var type = request.getParameter("type"); var deviceType = request.getParameter("deviceType");
var deviceId = request.getParameter("deviceId"); var deviceId = request.getParameter("deviceId");
var owner = request.getParameter("owner"); var owner = request.getParameter("owner");
var index = request.getParameter("start"); var index = request.getParameter("start");
@ -34,7 +34,7 @@ if (uriMatcher.match("/{context}/api/operation/paginate")) {
var search = request.getParameter("search[value]"); var search = request.getParameter("search[value]");
var restAPIEndpoint = devicemgtProps["httpsURL"] + devicemgtProps["backendRestEndpoints"]["deviceMgt"] + var restAPIEndpoint = devicemgtProps["httpsURL"] + devicemgtProps["backendRestEndpoints"]["deviceMgt"] +
"/devices/" + type + "/" + deviceId + "/operations?owner=" + owner + "&offset=" + index + "&limit=" + length; "/devices/" + deviceType + "/" + deviceId + "/operations?owner=" + owner + "&offset=" + index + "&limit=" + length;
serviceInvokers.XMLHttp.get( serviceInvokers.XMLHttp.get(
restAPIEndpoint, restAPIEndpoint,

@ -26,7 +26,7 @@ var serviceInvokers = require("/app/modules/oauth/token-protected-service-invoke
var devicemgtProps = require("/app/modules/conf-reader/main.js")["conf"]; var devicemgtProps = require("/app/modules/conf-reader/main.js")["conf"];
if (uriMatcher.match("/{context}/api/stats/paginate")) { if (uriMatcher.match("/{context}/api/stats/paginate")) {
var type = request.getParameter("type"); var deviceType = request.getParameter("deviceType");
var deviceId = request.getParameter("deviceId"); var deviceId = request.getParameter("deviceId");
var from = request.getParameter("from"); var from = request.getParameter("from");
var to = request.getParameter("to"); var to = request.getParameter("to");
@ -35,7 +35,7 @@ if (uriMatcher.match("/{context}/api/stats/paginate")) {
var keys = request.getParameter("attributes"); var keys = request.getParameter("attributes");
keys = JSON.parse(keys); keys = JSON.parse(keys);
var restAPIEndpoint = devicemgtProps["httpsURL"] + devicemgtProps["backendRestEndpoints"]["deviceMgt"] + "/events/" var restAPIEndpoint = devicemgtProps["httpsURL"] + devicemgtProps["backendRestEndpoints"]["deviceMgt"] + "/events/"
+ type + "/" + deviceId + "?offset=" + index +"&limit=" + length + "&from="+ from + "&to=" + to; + deviceType + "/" + deviceId + "?offset=" + index +"&limit=" + length + "&from="+ from + "&to=" + to;
serviceInvokers.XMLHttp.get( serviceInvokers.XMLHttp.get(
restAPIEndpoint, restAPIEndpoint,
function (restAPIResponse) { function (restAPIResponse) {

@ -37,7 +37,7 @@
</a> </a>
</li> </li>
<li> <li>
<a href="{{@app.context}}/device/{{type}}?id={{deviceId}}"> <a href="{{@app.context}}/device/{{deviceType}}?id={{deviceId}}">
{{deviceName}} {{deviceName}}
</a> </a>
</li> </li>

@ -39,7 +39,7 @@
</a> </a>
</li> </li>
<li> <li>
<a href="{{@app.context}}/device/{{type}}/enroll"> <a href="{{@app.context}}/device/{{deviceType}}/enroll">
{{label}} {{label}}
</a> </a>
</li> </li>
@ -50,7 +50,7 @@
<div class="wr-hidden-operations wr-advance-operations"></div> <div class="wr-hidden-operations wr-advance-operations"></div>
<div class="col-md-12 wr-page-content"> <div class="col-md-12 wr-page-content">
<div> <div>
{{! dynamically resolves device type-view unit according to type URI param }} {{! dynamically resolves device type-view unit according to deviceType URI param }}
{{unit deviceTypeViewUnitName}} {{unit deviceTypeViewUnitName}}
</div> </div>
</div> </div>

@ -399,7 +399,7 @@
<div class="modal-body add-margin-top-2x add-margin-bottom-2x"> <div class="modal-body add-margin-top-2x add-margin-bottom-2x">
<input id="edit-device-name" style="color:#3f3f3f;padding:5px" type="text" <input id="edit-device-name" style="color:#3f3f3f;padding:5px" type="text"
value="" value=""
placeholder="Type here" length="60"> placeholder="Type here" size="60">
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<div class="buttons"> <div class="buttons">
@ -603,7 +603,7 @@
} }
.select2-selection__choice { .select2-selection__choice {
font-length: medium; font-size: medium;
} }
</style> </style>
{{/zone}} {{/zone}}

@ -422,7 +422,7 @@
} }
.select2-selection__choice { .select2-selection__choice {
font-length: medium; font-size: medium;
} }
</style> </style>
{{/zone}} {{/zone}}

@ -182,7 +182,7 @@
{{#each policyListToView}} {{#each policyListToView}}
<tr data-type="selectable" data-id="{{id}}" data-status="{{status}}"> <tr data-type="selectable" data-id="{{id}}" data-status="{{status}}">
<td class="remove-padding icon-only content-fill viewEnabledIcon" <td class="remove-padding icon-only content-fill viewEnabledIcon"
data-url="{{@app.context}}/policy/view?id={{id}}&type={{platform}}" data-id="{{id}}"> data-url="{{@app.context}}/policy/view?id={{id}}&deviceType={{platform}}" data-id="{{id}}">
<div class="thumbnail icon"> <div class="thumbnail icon">
<img src="{{icon}}"> <img src="{{icon}}">
</div> </div>
@ -239,7 +239,7 @@
</td> </td>
<td class="text-right content-fill text-left-on-grid-view no-wrap tooltip-overflow-fix"> <td class="text-right content-fill text-left-on-grid-view no-wrap tooltip-overflow-fix">
<!--suppress HtmlUnknownTarget --> <!--suppress HtmlUnknownTarget -->
<a href="{{@app.context}}/policy/edit?id={{id}}&type={{platform}}" <a href="{{@app.context}}/policy/edit?id={{id}}&deviceType={{platform}}"
data-id="{{id}}" data-id="{{id}}"
data-toggle="tooltip" data-toggle="tooltip"
data-original-title="Edit" data-original-title="Edit"

@ -1,11 +1,11 @@
<div class="col-lg-12 margin-top-double"> <div class="col-lg-12 margin-top-double">
<h1 class="grey ">{{type}}</h1> <h1 class="grey ">{{deviceType}}</h1>
<hr> <hr>
</div> </div>
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-3 padding-top add-margin-bottom-5x"> <div class="col-xs-12 col-sm-4 col-md-4 col-lg-3 padding-top add-margin-bottom-5x">
<img src="{{@unit.publicUri}}/images/type.png" class="img-responsive"> <img src="{{@unit.publicUri}}/images/deviceType.png" class="img-responsive">
</div> </div>
<div class="col-xs-12 col-sm-8 col-md-8 col-lg-8 padding-top"> <div class="col-xs-12 col-sm-8 col-md-8 col-lg-8 padding-top">
@ -127,7 +127,7 @@
<li class="padding-top-double"><span><h4 class="uppercase">Create Device</h4></span> <li class="padding-top-double"><span><h4 class="uppercase">Create Device</h4></span>
<code>curl -X POST {{httpsGateway}}/api/device-mgt/v1.0/device/agent/enroll -H 'accept: application/json' <code>curl -X POST {{httpsGateway}}/api/device-mgt/v1.0/device/agent/enroll -H 'accept: application/json'
-H 'authorization: Bearer %accessToken%' -H 'authorization: Bearer %accessToken%'
-H 'content-type: application/json' -d '{ "name": "devicename", "type": "{{type}}", -H 'content-type: application/json' -d '{ "name": "devicename", "type": "{{deviceType}}",
"description": "descritption", "deviceIdentifier": "1234", "enrolmentInfo": "description": "descritption", "deviceIdentifier": "1234", "enrolmentInfo":
{"ownership": "BYOD", "status": "ACTIVE"} {"ownership": "BYOD", "status": "ACTIVE"}
,"properties": [{"name": "propertyName","value": "propertyValue"}]}'</code> ,"properties": [{"name": "propertyName","value": "propertyValue"}]}'</code>
@ -149,7 +149,7 @@
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
<input aria-describedby="basic-addon1" type="text" id="deviceTypeName" style="display: none;" <input aria-describedby="basic-addon1" type="text" id="deviceTypeName" style="display: none;"
data-error-msg="invalid device type name" class="form-control" value="{{type}}"/> data-error-msg="invalid device type name" class="form-control" value="{{deviceType}}"/>
<br> <br>
<label class="wr-input-label">Name</label> <label class="wr-input-label">Name</label>
<input aria-describedby="basic-addon1" type="text" id="deviceName" <input aria-describedby="basic-addon1" type="text" id="deviceName"

@ -18,7 +18,7 @@
{{#defineZone "contentTitle"}} {{#defineZone "contentTitle"}}
<div class="row wr-device-board"> <div class="row wr-device-board">
<div class="col-lg-12 wr-secondary-bar"> <div class="col-lg-12 wr-secondary-bar">
<span class="page-sub-title">{{@uriParams.type}} Agent Download</span> <span class="page-sub-title">{{@uriParams.deviceType}} Agent Download</span>
</div> </div>
</div> </div>
{{/defineZone}} {{/defineZone}}
@ -63,22 +63,22 @@
<div class="container"> <div class="container">
<div class="col-lg-12 margin-top-double"> <div class="col-lg-12 margin-top-double">
<h1 class="grey ">{{type.displayName}}</h1> <h1 class="grey ">{{deviceType.displayName}}</h1>
<hr> <hr>
<p class="margin-bottom-double light-grey ">{{#defineZone "deviceTypeHeading"}}Connect your {{type.displayName}} device <p class="margin-bottom-double light-grey ">{{#defineZone "deviceTypeHeading"}}Connect your {{deviceType.displayName}} device
to the WSO2 device cloud. {{/defineZone}}</p> to the WSO2 device cloud. {{/defineZone}}</p>
</div> </div>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-4 padding-top"> <div class="col-xs-12 col-sm-6 col-md-4 col-lg-4 padding-top">
<img src="{{@app.context}}{{type.image}}" class="img-responsive"> <img src="{{@app.context}}{{deviceType.image}}" class="img-responsive">
</div> </div>
<div class="col-xs-12 col-sm-6 col-md-8 col-lg-8 padding-top"> <div class="col-xs-12 col-sm-6 col-md-8 col-lg-8 padding-top">
{{#if type.ingredients}} {{#if deviceType.ingredients}}
<h3 class="uppercase">Ingredients</h3> <h3 class="uppercase">Ingredients</h3>
<hr> <hr>
<p class="grey margin-top">Hardware Requirements </p> <p class="grey margin-top">Hardware Requirements </p>
<br> <br>
<ul> <ul>
{{#itr type.ingredients}} {{#itr deviceType.ingredients}}
<span class="fw-stack fw-lg margin-right"> <span class="fw-stack fw-lg margin-right">
<i class="fw fw-circle-outline fw-stack-2x"> </i> <i class="fw fw-circle-outline fw-stack-2x"> </i>
<i class="fw fw-right-arrow fw-stack-1x"></i> <i class="fw fw-right-arrow fw-stack-1x"></i>
@ -89,22 +89,22 @@
<br> <br>
{{/if}} {{/if}}
{{#if type.downloadBtnText}} {{#if deviceType.downloadBtnText}}
<a href="#" class="download-link btn-operations" data-devicetype="{{@uriParams.type}}" data-sketchtype="{{@uriParams.type}}"><i class="fw fw-download"></i> {{{type.downloadBtnText}}}</a> <a href="#" class="download-link btn-operations" data-devicetype="{{@uriParams.deviceType}}" data-sketchtype="{{@uriParams.deviceType}}"><i class="fw fw-download"></i> {{{deviceType.downloadBtnText}}}</a>
{{else}} {{else}}
<a href="#" class="download-link btn-operations" data-devicetype="{{@uriParams.type}}" data-sketchtype="{{@uriParams.type}}"><i class="fw fw-download"></i> Download</a> <a href="#" class="download-link btn-operations" data-devicetype="{{@uriParams.deviceType}}" data-sketchtype="{{@uriParams.deviceType}}"><i class="fw fw-download"></i> Download</a>
{{/if}} {{/if}}
<br/><br/> <br/><br/>
</div> </div>
{{#if type.prepareSteps}} {{#if deviceType.prepareSteps}}
<div class="col-xs-12 col-sm-6 col-md-3 col-lg-12 padding-double grey-bg "> <div class="col-xs-12 col-sm-6 col-md-3 col-lg-12 padding-double grey-bg ">
<h3 class="uppercase">Prepare</h3><hr> <h3 class="uppercase">Prepare</h3><hr>
<p class="grey margin-top">Get your device ready</p> <p class="grey margin-top">Get your device ready</p>
<br/> <br/>
<ul> <ul>
{{#itr type.prepareSteps}} {{#itr deviceType.prepareSteps}}
<p class="padding-top-double"><span class="circle">0{{key}}</span> {{{value}}}</p> <p class="padding-top-double"><span class="circle">0{{key}}</span> {{{value}}}</p>
{{/itr}} {{/itr}}
</ul> </ul>
@ -112,26 +112,26 @@
</div> </div>
{{/if}} {{/if}}
{{#if type.schematicDiagram}} {{#if deviceType.schematicDiagram}}
<div class="col-xs-12 col-sm-6 col-md-3 col-lg-12 padding-double"> <div class="col-xs-12 col-sm-6 col-md-3 col-lg-12 padding-double">
<h3 class="uppercase">Schematic Diagram</h3><hr> <h3 class="uppercase">Schematic Diagram</h3><hr>
<p class="grey margin-top">Click on the image to zoom</p> <p class="grey margin-top">Click on the image to zoom</p>
<center> <center>
<a href="{{@app.context}}{{type.schematicDiagram}}" target="_blank"> <a href="{{@app.context}}{{deviceType.schematicDiagram}}" target="_blank">
<img src="{{@app.context}}{{type.schematicDiagram}}" class="img-responsive" style="max-width: 500px; max-height: 500px"> <img src="{{@app.context}}{{deviceType.schematicDiagram}}" class="img-responsive" style="max-width: 500px; max-height: 500px">
</a> </a>
</center> </center>
<br/> <br/>
</div> </div>
{{/if}} {{/if}}
{{#if type.quickStartup}} {{#if deviceType.quickStartup}}
<div class="col-xs-12 col-sm-6 col-md-3 col-lg-12 padding-double"> <div class="col-xs-12 col-sm-6 col-md-3 col-lg-12 padding-double">
<h3 class="uppercase">Connect (Quick Start)</h3><hr> <h3 class="uppercase">Connect (Quick Start)</h3><hr>
<p class="grey margin-top">Internet of Things Foundation Quickstart connection</p> <p class="grey margin-top">Internet of Things Foundation Quickstart connection</p>
<br/> <br/>
<ul> <ul>
{{#itr type.quickStartup}} {{#itr deviceType.quickStartup}}
<p class="padding-top-double"><span class="circle">0{{key}}</span> {{{value}}}</p> <p class="padding-top-double"><span class="circle">0{{key}}</span> {{{value}}}</p>
{{/itr}} {{/itr}}
</ul> </ul>
@ -139,17 +139,17 @@
</div> </div>
{{/if}} {{/if}}
{{#if type.additionalHtml}} {{#if deviceType.additionalHtml}}
{{{type.additionalHtml}}} {{{deviceType.additionalHtml}}}
{{/if}} {{/if}}
</div> </div>
{{#if type.showQRCode}} {{#if deviceType.showQRCode}}
<div id="qr-code-modal" data-enrollment-url="{{type.enrollmentURL}}" class="hidden"> <div id="qr-code-modal" data-enrollment-url="{{deviceType.enrollmentURL}}" class="hidden">
<div class="content"> <div class="content">
<div class="row"> <div class="row">

@ -7,7 +7,7 @@
</span> </span>
<span class="wr-list-desc"> <span class="wr-list-desc">
<h3 class="wr-list-name">{{policy.policyName}}</h3> <h3 class="wr-list-name">{{policy.policyName}}</h3>
<span class="wr-list-username">{{type}}</span> <span class="wr-list-username">{{deviceType}}</span>
</span> </span>
</div> </div>
<div class="col-lg-6"> <div class="col-lg-6">
@ -37,7 +37,7 @@
</div> </div>
<div class="col-lg-3"> <div class="col-lg-3">
<span class="list-group-item-actions"> <span class="list-group-item-actions">
<a href="{{appContext}}/policy/effective-policy?type={{type}}&id={{deviceId}}" <a href="{{appContext}}/policy/effective-policy?type={{deviceType}}&id={{deviceId}}"
class="cu-btn-inner policy-view-link" data-id="{{id}}"> class="cu-btn-inner policy-view-link" data-id="{{id}}">
<span class="fw-stack"> <span class="fw-stack">
<i class="fw fw-circle-outline fw-stack-2x"></i> <i class="fw fw-circle-outline fw-stack-2x"></i>

@ -23,7 +23,7 @@
@footer-height: 40px; @footer-height: 40px;
@footer-background: #000000; @footer-background: #000000;
@footer-color: #FFFFFF; @footer-color: #FFFFFF;
@footer-font-length: 12px; @footer-font-size: 12px;
@footer-letter-spacing: 1px; @footer-letter-spacing: 1px;
@footer-font-weight: 500; @footer-font-weight: 500;

@ -83,7 +83,7 @@
&:after { &:after {
content: " "; content: " ";
display: block; display: block;
font-length: 0; font-size: 0;
height: 0; height: 0;
clear: both; clear: both;
visibility: hidden; visibility: hidden;
@ -613,7 +613,7 @@ header .brand {
display: inline-block; display: inline-block;
line-height: 1; line-height: 1;
font-weight: 500; font-weight: 500;
font-length: 17px; font-size: 17px;
margin: 0 0 0 5px; margin: 0 0 0 5px;
color: @base-light-color; color: @base-light-color;
padding: 6px 0 0 0; padding: 6px 0 0 0;
@ -699,7 +699,7 @@ header .dropdown[aria-expanded=true], header .dropdown:hover {
height: @navbar-height; height: @navbar-height;
padding: 0 8px; padding: 0 8px;
line-height: @navbar-height; line-height: @navbar-height;
font-length: 18px; font-size: 18px;
background: @optional-color; background: @optional-color;
color: @base-light-color; color: @base-light-color;
@ -737,7 +737,7 @@ header .dropdown[aria-expanded=true], header .dropdown:hover {
.navbar > .container .navbar-brand a, .navbar > .container .navbar-brand a,
.navbar > .container-fluid .navbar-brand a { .navbar > .container-fluid .navbar-brand a {
color: @base-light-color; color: @base-light-color;
font-length: 16px; font-size: 16px;
} }
.navbar-default .navbar-collapse, .navbar-default .navbar-form { .navbar-default .navbar-collapse, .navbar-default .navbar-form {
@ -798,7 +798,7 @@ header .dropdown[aria-expanded=true], header .dropdown:hover {
} }
.navbar-collapse.tiles ul.nav li a i { .navbar-collapse.tiles ul.nav li a i {
font-length: 46px; font-size: 46px;
display: block; display: block;
margin-bottom: 10px; margin-bottom: 10px;
} }
@ -913,7 +913,7 @@ ul.sidebar-messages > li {
.sidebar-nav > .sidebar-brand { .sidebar-nav > .sidebar-brand {
height: 65px; height: 65px;
font-length: 18px; font-size: 18px;
line-height: 60px; line-height: 60px;
} }
@ -999,7 +999,7 @@ footer > .container-fluid p {
} }
footer .icon { footer .icon {
font-length: 21px; font-size: 21px;
vertical-align: middle; vertical-align: middle;
color: @footer-color; color: @footer-color;
} }
@ -1054,7 +1054,7 @@ footer a {
width: 50px; width: 50px;
line-height: 1; line-height: 1;
padding: 0 10px; padding: 0 10px;
font-length: 12px; font-size: 12px;
background: @base-dark-color; background: @base-dark-color;
color: @base-light-color; color: @base-light-color;
} }
@ -1221,7 +1221,7 @@ footer a {
.dropdown-menu.tiles li a .icon { .dropdown-menu.tiles li a .icon {
display: block; display: block;
font-length: 35px; font-size: 35px;
margin: 3px 0 7px; margin: 3px 0 7px;
height: 35px; height: 35px;
} }
@ -1229,7 +1229,7 @@ footer a {
.dropdown-menu.tiles li a .name { .dropdown-menu.tiles li a .name {
display: block; display: block;
line-height: 14px; line-height: 14px;
font-length: 12px; font-size: 12px;
height: 28px; height: 28px;
overflow: hidden; overflow: hidden;
} }
@ -1395,7 +1395,7 @@ footer a {
.loading .loading-animation p { .loading .loading-animation p {
color: @loading-color; color: @loading-color;
text-align: center; text-align: center;
font-length: 11px; font-size: 11px;
margin-top: 4px; margin-top: 4px;
text-transform: uppercase; text-transform: uppercase;
} }
@ -1418,7 +1418,7 @@ footer a {
} }
.input-group-btn .control-label { .input-group-btn .control-label {
font-length: 14px; font-size: 14px;
padding-top: 0; padding-top: 0;
margin: 0 5px; margin: 0 5px;
} }
@ -1880,7 +1880,7 @@ table.dataTable thead .sorting_desc:after {
.dataTables_wrapper ul.sort-list li a.sorting_desc:before { .dataTables_wrapper ul.sort-list li a.sorting_desc:before {
font-family: @font-icons; font-family: @font-icons;
margin-right: 10px; margin-right: 10px;
font-length: 11px; font-size: 11px;
.opacity(1); .opacity(1);
} }
@ -2097,7 +2097,7 @@ table.dataTable.dtr-inline.collapsed > tbody > tr {
.panel-default > .panel-heading { .panel-default > .panel-heading {
background: transparent; background: transparent;
font-length: 24px; font-size: 24px;
font-weight: 500; font-weight: 500;
border-bottom: 1px solid #e4e4e4; border-bottom: 1px solid #e4e4e4;
padding-bottom: 10px; padding-bottom: 10px;
@ -2184,7 +2184,7 @@ ul.tiles li a {
ul.tiles .icon { ul.tiles .icon {
display: block; display: block;
font-length: 15px; font-size: 15px;
margin: 0 auto 5px; margin: 0 auto 5px;
} }
@ -2286,7 +2286,7 @@ a.list-group-item:hover {
width: 20px; width: 20px;
text-align: center; text-align: center;
line-height: 20px; line-height: 20px;
font-length: 10px; font-size: 10px;
display: inline-block; display: inline-block;
margin-right: 10px; margin-right: 10px;
} }
@ -2363,11 +2363,11 @@ a.list-group-item:hover {
} }
.asset-desc .asset-name { .asset-desc .asset-name {
font-length: 24px; font-size: 24px;
margin-bottom: 0; margin-bottom: 0;
} }
.asset-desc .asset-publisher { .asset-desc .asset-publisher {
font-length: 14px; font-size: 14px;
margin-bottom: 20px; margin-bottom: 20px;
} }

@ -468,7 +468,7 @@
--> -->
<FileUploadConfig> <FileUploadConfig>
<!-- <!--
The total file upllengthsize limit in MB The total file upload size limit in MB
--> -->
<TotalFileSizeLimit>100</TotalFileSizeLimit> <TotalFileSizeLimit>100</TotalFileSizeLimit>

@ -1,19 +0,0 @@
mvn clean install -Dmaven.test.skip=true -f components/application-mgt/org.wso2.carbon.device.application.mgt.common/pom.xml
mvn clean install -Dmaven.test.skip=true -f components/application-mgt/org.wso2.carbon.device.application.mgt.core/pom.xml
mvn clean install -Dmaven.test.skip=true -f components/application-mgt/org.wso2.carbon.device.application.mgt.api/pom.xml
rm ~/projects/wso2/iot/testing/appm/310appm/wso2iot-3.1.0-SNAPSHOT/patches/patch0101/ -r
mkdir ~/projects/wso2/iot/testing/appm/310appm/wso2iot-3.1.0-SNAPSHOT/patches/patch0101
cp components/application-mgt/org.wso2.carbon.device.application.mgt.common/target/org.wso2.carbon.device.application.mgt.common-*.jar ~/projects/wso2/iot/testing/appm/310appm/wso2iot-3.1.0-SNAPSHOT/patches/patch0101/
cp components/application-mgt/org.wso2.carbon.device.application.mgt.core/target/org.wso2.carbon.device.application.mgt.core-*.jar ~/projects/wso2/iot/testing/appm/310appm/wso2iot-3.1.0-SNAPSHOT/patches/patch0101/
rm ~/projects/wso2/iot/testing/appm/310appm/wso2iot-3.1.0-SNAPSHOT/repository/deployment/server/webapps/api#application-mgt#v1.0.war
rm ~/projects/wso2/iot/testing/appm/310appm/wso2iot-3.1.0-SNAPSHOT/repository/deployment/server/webapps/api#application-mgt#v1.0/ -r
cp components/application-mgt/org.wso2.carbon.device.application.mgt.api/target/api#application-mgt#v1.0.war ~/projects/wso2/iot/testing/appm/310appm/wso2iot-3.1.0-SNAPSHOT/repository/deployment/server/webapps/

@ -24,6 +24,6 @@
</JndiLookupDefinition> </JndiLookupDefinition>
</DataSourceConfiguration> </DataSourceConfiguration>
</ManagementRepository> </ManagementRepository>
<!-- Default plengthsize of GET certificates API --> <!-- Default page size of GET certificates API -->
<DefaultPageSize>10</DefaultPageSize> <DefaultPageSize>10</DefaultPageSize>
</CertificateConfigurations> </CertificateConfigurations>

@ -556,20 +556,6 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_DETAIL (
) )
ENGINE = InnoDB; ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `APPM_DEVICE_APPLICATION_MAPPING`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `DM_DEVICE_APPLICATION_MAPPING` (
`ID` INT AUTO_INCREMENT NOT NULL,
`DEVICE_IDENTIFIER` VARCHAR(255) NOT NULL,
`APPLICATION_UUID` VARCHAR(100) NOT NULL,
`VERSION_NAME` VARCHAR(100) NOT NULL,
`INSTALLED` BOOLEAN NOT NULL,
`SENT_AT` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (ID),
UNIQUE KEY `device_app_mapping` (`DEVICE_IDENTIFIER`, `APPLICATION_UUID`)
) ENGINE = InnoDB;
-- DASHBOARD RELATED VIEWS -- -- DASHBOARD RELATED VIEWS --
CREATE VIEW DEVICE_INFO_VIEW AS CREATE VIEW DEVICE_INFO_VIEW AS

@ -24,7 +24,7 @@
<title>Entgra IoT Server</title> <title>Entgra IoT Server</title>
</head> </head>
<body style="color: #666666; background-color:#cdcdcd; padding: 0px; margin: 0px;"> <body style="color: #666666; background-color:#cdcdcd; padding: 0px; margin: 0px;">
<div style="background-color:#cdcdcd; font-length: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; padding: 20px 0px; margin: 0px;"> <div style="background-color:#cdcdcd; font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; padding: 20px 0px; margin: 0px;">
<div style="width: 86%; max-width: 650px; padding: 2%; background-color: #ffffff; margin: auto; border-radius: 14px;"> <div style="width: 86%; max-width: 650px; padding: 2%; background-color: #ffffff; margin: auto; border-radius: 14px;">
<div style="background-color: #49c8f5; line-height: 0px; border-top-left-radius: 10px; border-top-right-radius: 10px; padding: 0px 10px 0px 0px;"> <div style="background-color: #49c8f5; line-height: 0px; border-top-left-radius: 10px; border-top-right-radius: 10px; padding: 0px 10px 0px 0px;">
<div style="display: inline-block; line-height: 0px;"> <div style="display: inline-block; line-height: 0px;">
@ -33,23 +33,23 @@
</div> </div>
</div> </div>
<div style="background-color: #ffffff; line-height: 170%; color: #666666; padding: 20px 25px;"> <div style="background-color: #ffffff; line-height: 170%; color: #666666; padding: 20px 25px;">
<p style="font-length: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px 20px;"> <p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px 20px;">
Hi $first-name, Hi $first-name,
</p> </p>
<p style="font-length: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px;"> <p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px;">
You have been invited to enrol devices with WSO2 IoT Server. You have been invited to enrol devices with WSO2 IoT Server.
Click <a href="$base-url-https/devicemgt/device/enroll">here</a> to enrol the WSO2 IoT Server devices to begin.</p> Click <a href="$base-url-https/devicemgt/device/enroll">here</a> to enrol the WSO2 IoT Server devices to begin.</p>
<p style="font-length: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px;"> <p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px;">
Should you need assistance, please contact your administrator. Should you need assistance, please contact your administrator.
</p> </p>
<p style="font-length: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 20px 0px 5px;"> <p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 20px 0px 5px;">
Regards, Regards,
</p> </p>
<p style="font-length: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px;"> <p style="font-size: 1em; font-family: Arial, Helvetica; line-height: 170%; color: #666666; margin: 5px 0px;">
WSO2 IoT Server Administrator WSO2 IoT Server Administrator
</p> </p>
</div> </div>

@ -1,355 +0,0 @@
2017-09-11 11:17:06,019 INFO o.a.j.u.JMeterUtils: Setting Locale to en_US
2017-09-11 11:17:06,029 INFO o.a.j.JMeter: Loading user properties from: /home/wso2/programs/jmeter/apache-jmeter-3.2/bin/user.properties
2017-09-11 11:17:06,030 INFO o.a.j.JMeter: Loading system properties from: /home/wso2/programs/jmeter/apache-jmeter-3.2/bin/system.properties
2017-09-11 11:17:06,036 INFO o.a.j.JMeter: Copyright (c) 1998-2017 The Apache Software Foundation
2017-09-11 11:17:06,036 INFO o.a.j.JMeter: Version 3.2 r1790748
2017-09-11 11:17:06,036 INFO o.a.j.JMeter: java.version=1.8.0_131
2017-09-11 11:17:06,036 INFO o.a.j.JMeter: java.vm.name=Java HotSpot(TM) 64-Bit Server VM
2017-09-11 11:17:06,036 INFO o.a.j.JMeter: os.name=Linux
2017-09-11 11:17:06,036 INFO o.a.j.JMeter: os.arch=amd64
2017-09-11 11:17:06,036 INFO o.a.j.JMeter: os.version=4.10.0-33-generic
2017-09-11 11:17:06,036 INFO o.a.j.JMeter: file.encoding=UTF-8
2017-09-11 11:17:06,036 INFO o.a.j.JMeter: Max memory =536870912
2017-09-11 11:17:06,036 INFO o.a.j.JMeter: Available Processors =4
2017-09-11 11:17:06,040 INFO o.a.j.JMeter: Default Locale=English (United States)
2017-09-11 11:17:06,041 INFO o.a.j.JMeter: JMeter Locale=English (United States)
2017-09-11 11:17:06,041 INFO o.a.j.JMeter: JMeterHome=/home/wso2/programs/jmeter/apache-jmeter-3.2
2017-09-11 11:17:06,041 INFO o.a.j.JMeter: user.dir =/home/wso2/projects/wso2/iot/chathura/device-mgt/carbon-device-mgt
2017-09-11 11:17:06,041 INFO o.a.j.JMeter: PWD =/home/wso2/projects/wso2/iot/chathura/device-mgt/carbon-device-mgt
2017-09-11 11:17:06,041 INFO o.a.j.JMeter: IP: 127.0.1.1 Name: laptop1 FullName: laptop1
2017-09-11 11:17:06,302 INFO o.a.j.g.a.LookAndFeelCommand: Using look and feel: javax.swing.plaf.metal.MetalLookAndFeel [Metal, CrossPlatform]
2017-09-11 11:17:06,305 INFO o.a.j.JMeter: Loaded icon properties from org/apache/jmeter/images/icon.properties
2017-09-11 11:17:06,714 INFO o.a.j.e.u.CompoundVariable: Note: Function class names must contain the string: '.functions.'
2017-09-11 11:17:06,714 INFO o.a.j.e.u.CompoundVariable: Note: Function class names must not contain the string: '.gui.'
2017-09-11 11:17:07,644 INFO o.a.j.g.u.MenuFactory: Skipping org.apache.jmeter.assertions.BSFAssertion
2017-09-11 11:17:08,197 INFO o.a.j.g.u.MenuFactory: Skipping org.apache.jmeter.extractor.BSFPostProcessor
2017-09-11 11:17:08,237 INFO o.a.j.g.u.MenuFactory: Skipping org.apache.jmeter.modifiers.BSFPreProcessor
2017-09-11 11:17:08,271 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/html is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2017-09-11 11:17:08,271 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for application/xhtml+xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2017-09-11 11:17:08,271 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for application/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2017-09-11 11:17:08,272 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2017-09-11 11:17:08,272 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser
2017-09-11 11:17:08,272 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/css is org.apache.jmeter.protocol.http.parser.CssParser
2017-09-11 11:17:08,616 INFO o.a.j.e.KeyToolUtils: keytool found at 'keytool'
2017-09-11 11:17:08,617 INFO o.a.j.p.h.p.ProxyControl: HTTP(S) Test Script Recorder SSL Proxy will use keys that support embedded 3rd party resources in file /home/wso2/programs/jmeter/apache-jmeter-3.2/bin/proxyserver.jks
2017-09-11 11:17:08,755 INFO o.a.j.g.u.MenuFactory: Skipping org.apache.jmeter.protocol.java.sampler.BSFSampler
2017-09-11 11:17:08,797 INFO o.a.j.s.FileServer: Default base='/home/wso2/projects/wso2/iot/chathura/device-mgt/carbon-device-mgt'
2017-09-11 11:17:08,876 INFO o.a.j.g.u.MenuFactory: Skipping org.apache.jmeter.protocol.mongodb.config.MongoSourceElement
2017-09-11 11:17:08,876 INFO o.a.j.g.u.MenuFactory: Skipping org.apache.jmeter.protocol.mongodb.sampler.MongoScriptSampler
2017-09-11 11:17:08,989 INFO o.a.j.g.u.MenuFactory: Skipping org.apache.jmeter.timers.BSFTimer
2017-09-11 11:17:09,023 INFO o.a.j.g.u.MenuFactory: Skipping org.apache.jmeter.visualizers.BSFListener
2017-09-11 11:17:09,177 INFO o.a.j.s.SampleResult: Note: Sample TimeStamps are START times
2017-09-11 11:17:09,178 INFO o.a.j.s.SampleResult: sampleresult.default.encoding is set to ISO-8859-1
2017-09-11 11:17:09,178 INFO o.a.j.s.SampleResult: sampleresult.useNanoTime=true
2017-09-11 11:17:09,178 INFO o.a.j.s.SampleResult: sampleresult.nanoThreadSleep=5000
2017-09-11 11:17:16,343 INFO o.a.j.g.a.Load: Loading file: /home/wso2/projects/wso2/iot/chathura/product-iots/product-iots/modules/integration/tests-integration/src/test/resources/jmeter-scripts/ApplicationManagementAPI.jmx
2017-09-11 11:17:16,344 INFO o.a.j.s.FileServer: Set new base='/home/wso2/projects/wso2/iot/chathura/product-iots/product-iots/modules/integration/tests-integration/src/test/resources/jmeter-scripts'
2017-09-11 11:17:16,441 INFO o.a.j.s.SaveService: Testplan (JMX) version: 2.2. Testlog (JTL) version: 2.2
2017-09-11 11:17:16,456 INFO o.a.j.s.SaveService: Using SaveService properties file encoding UTF-8
2017-09-11 11:17:16,458 INFO o.a.j.s.SaveService: Using SaveService properties version 3.2
2017-09-11 11:17:16,461 INFO o.a.j.s.SaveService: Loading file: /home/wso2/projects/wso2/iot/chathura/product-iots/product-iots/modules/integration/tests-integration/src/test/resources/jmeter-scripts/ApplicationManagementAPI.jmx
2017-09-11 11:17:16,491 INFO o.a.j.p.h.c.CookieManager: Settings: Delete null: true Check: true Allow variable: true Save: false Prefix: COOKIE_
2017-09-11 11:17:16,491 INFO o.a.j.u.NameUpdater: Upgrading class org.apache.jmeter.protocol.http.sampler.SoapSampler to org.apache.jmeter.config.ConfigTestElement
2017-09-11 11:17:16,491 INFO o.a.j.u.NameUpdater: Upgrading class org.apache.jmeter.protocol.http.control.gui.SoapSamplerGui to org.apache.jmeter.config.gui.ObsoleteGui
2017-09-11 11:17:16,492 INFO o.a.j.u.NameUpdater: Upgrading class org.apache.jmeter.protocol.http.control.gui.SoapSamplerGui to org.apache.jmeter.config.gui.ObsoleteGui
2017-09-11 11:17:16,503 INFO o.a.j.u.NameUpdater: Upgrading class org.apache.jmeter.protocol.http.control.gui.SoapSamplerGui to org.apache.jmeter.config.gui.ObsoleteGui
2017-09-11 11:17:16,504 INFO o.a.j.u.NameUpdater: Upgrading class org.apache.jmeter.protocol.http.control.gui.SoapSamplerGui to org.apache.jmeter.config.gui.ObsoleteGui
2017-09-11 11:17:17,087 INFO o.a.j.s.FileServer: Set new base='/home/wso2/projects/wso2/iot/chathura/product-iots/product-iots/modules/integration/tests-integration/src/test/resources/jmeter-scripts'
2017-09-11 11:18:36,250 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2017-09-11 11:18:36,251 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2017-09-11 11:18:36,251 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2017-09-11 11:18:36,266 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2017-09-11 11:18:36,378 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Application Management - Super Tenant
2017-09-11 11:18:36,378 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group Application Management - Super Tenant.
2017-09-11 11:18:36,378 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2017-09-11 11:18:36,378 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false
2017-09-11 11:18:36,418 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2017-09-11 11:18:36,418 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2017-09-11 11:18:36,424 INFO o.a.j.t.JMeterThread: Thread started: Application Management - Super Tenant 1-1
2017-09-11 11:18:36,464 INFO o.a.j.p.h.s.HTTPHCAbstractImpl: Local host = laptop1
2017-09-11 11:18:36,467 INFO o.a.j.p.h.s.HTTPHC4Impl: HTTP request retry count = 0
2017-09-11 11:18:36,521 INFO o.a.j.p.h.s.LazySchemeSocketFactory: Setting up HTTPS TrustAll Socket Factory
2017-09-11 11:18:36,525 INFO o.a.j.u.JsseSSLManager: Using default SSL protocol: TLS
2017-09-11 11:18:36,525 INFO o.a.j.u.JsseSSLManager: SSL session context: per-thread
2017-09-11 11:18:36,705 INFO o.a.j.u.SSLManager: JmeterKeyStore Location: type JKS
2017-09-11 11:18:36,705 INFO o.a.j.u.SSLManager: KeyStore created OK
2017-09-11 11:18:36,705 WARN o.a.j.u.SSLManager: Keystore file not found, loading empty keystore
2017-09-11 11:18:40,414 INFO o.a.j.s.FileServer: Stored: /home/wso2/projects/wso2/iot/chathura/product-iots/product-iots/modules/integration/tests-integration/src/test/resources/jmeter-scripts/image.png
2017-09-11 11:18:40,915 INFO o.a.j.t.JMeterThread: Thread is done: Application Management - Super Tenant 1-1
2017-09-11 11:18:40,916 INFO o.a.j.t.JMeterThread: Thread finished: Application Management - Super Tenant 1-1
2017-09-11 11:18:40,916 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2017-09-11 11:18:40,917 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
2017-09-11 11:41:19,241 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2017-09-11 11:41:19,242 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2017-09-11 11:41:19,247 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2017-09-11 11:41:19,371 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Application Management - Super Tenant
2017-09-11 11:41:19,371 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group Application Management - Super Tenant.
2017-09-11 11:41:19,371 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2017-09-11 11:41:19,372 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false
2017-09-11 11:41:19,403 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2017-09-11 11:41:19,403 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2017-09-11 11:41:19,408 INFO o.a.j.t.JMeterThread: Thread started: Application Management - Super Tenant 1-1
2017-09-11 11:41:25,273 INFO o.a.j.s.FileServer: Stored: /home/wso2/projects/wso2/iot/chathura/product-iots/product-iots/modules/integration/tests-integration/src/test/resources/jmeter-scripts/image.png
2017-09-11 11:41:26,162 INFO o.a.j.t.JMeterThread: Thread is done: Application Management - Super Tenant 1-1
2017-09-11 11:41:26,163 INFO o.a.j.t.JMeterThread: Thread finished: Application Management - Super Tenant 1-1
2017-09-11 11:41:26,163 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2017-09-11 11:41:26,163 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
2017-09-11 11:46:37,551 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2017-09-11 11:46:37,551 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2017-09-11 11:46:37,555 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2017-09-11 11:46:37,677 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Application Management - Super Tenant
2017-09-11 11:46:37,677 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group Application Management - Super Tenant.
2017-09-11 11:46:37,677 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2017-09-11 11:46:37,678 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false
2017-09-11 11:46:37,703 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2017-09-11 11:46:37,703 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2017-09-11 11:46:37,704 INFO o.a.j.t.JMeterThread: Thread started: Application Management - Super Tenant 1-1
2017-09-11 11:46:40,303 INFO o.a.j.s.FileServer: Stored: /home/wso2/projects/wso2/iot/chathura/product-iots/product-iots/modules/integration/tests-integration/src/test/resources/jmeter-scripts/image.png
2017-09-11 11:46:41,107 INFO o.a.j.t.JMeterThread: Thread is done: Application Management - Super Tenant 1-1
2017-09-11 11:46:41,107 INFO o.a.j.t.JMeterThread: Thread finished: Application Management - Super Tenant 1-1
2017-09-11 11:46:41,108 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2017-09-11 11:46:41,108 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
2017-09-11 11:49:20,026 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2017-09-11 11:49:20,026 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2017-09-11 11:49:20,029 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2017-09-11 11:49:20,136 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Application Management - Super Tenant
2017-09-11 11:49:20,136 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group Application Management - Super Tenant.
2017-09-11 11:49:20,137 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2017-09-11 11:49:20,137 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false
2017-09-11 11:49:20,165 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2017-09-11 11:49:20,166 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2017-09-11 11:49:20,167 INFO o.a.j.t.JMeterThread: Thread started: Application Management - Super Tenant 1-1
2017-09-11 11:51:01,448 INFO o.a.j.s.FileServer: Stored: /home/wso2/projects/wso2/iot/chathura/product-iots/product-iots/modules/integration/tests-integration/src/test/resources/jmeter-scripts/image.png
2017-09-11 11:53:08,769 INFO o.a.j.t.JMeterThread: Thread is done: Application Management - Super Tenant 1-1
2017-09-11 11:53:08,769 INFO o.a.j.t.JMeterThread: Thread finished: Application Management - Super Tenant 1-1
2017-09-11 11:53:08,770 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2017-09-11 11:53:08,771 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
2017-09-11 11:57:09,607 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2017-09-11 11:57:09,609 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2017-09-11 11:57:09,613 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2017-09-11 11:57:09,736 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Application Management - Super Tenant
2017-09-11 11:57:09,736 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group Application Management - Super Tenant.
2017-09-11 11:57:09,736 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2017-09-11 11:57:09,736 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false
2017-09-11 11:57:09,761 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2017-09-11 11:57:09,761 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2017-09-11 11:57:09,762 INFO o.a.j.t.JMeterThread: Thread started: Application Management - Super Tenant 1-1
2017-09-11 11:57:19,936 INFO o.a.j.s.FileServer: Stored: /home/wso2/projects/wso2/iot/chathura/product-iots/product-iots/modules/integration/tests-integration/src/test/resources/jmeter-scripts/image.png
2017-09-11 11:57:20,432 INFO o.a.j.t.JMeterThread: Thread is done: Application Management - Super Tenant 1-1
2017-09-11 11:57:20,432 INFO o.a.j.t.JMeterThread: Thread finished: Application Management - Super Tenant 1-1
2017-09-11 11:57:20,433 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2017-09-11 11:57:20,433 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
2017-09-11 11:59:08,030 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2017-09-11 11:59:08,031 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2017-09-11 11:59:08,031 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2017-09-11 11:59:08,164 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Application Management - Super Tenant
2017-09-11 11:59:08,164 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group Application Management - Super Tenant.
2017-09-11 11:59:08,164 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2017-09-11 11:59:08,164 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false
2017-09-11 11:59:08,178 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2017-09-11 11:59:08,178 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2017-09-11 11:59:08,179 INFO o.a.j.t.JMeterThread: Thread started: Application Management - Super Tenant 1-1
2017-09-11 11:59:10,634 INFO o.a.j.s.FileServer: Stored: /home/wso2/projects/wso2/iot/chathura/product-iots/product-iots/modules/integration/tests-integration/src/test/resources/jmeter-scripts/image.png
2017-09-11 11:59:10,712 INFO o.a.j.t.JMeterThread: Thread is done: Application Management - Super Tenant 1-1
2017-09-11 11:59:10,712 INFO o.a.j.t.JMeterThread: Thread finished: Application Management - Super Tenant 1-1
2017-09-11 11:59:10,713 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2017-09-11 11:59:10,713 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
2017-09-11 12:01:02,024 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2017-09-11 12:01:02,024 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2017-09-11 12:01:02,026 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2017-09-11 12:01:02,140 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Application Management - Super Tenant
2017-09-11 12:01:02,140 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group Application Management - Super Tenant.
2017-09-11 12:01:02,140 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2017-09-11 12:01:02,140 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false
2017-09-11 12:01:02,156 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2017-09-11 12:01:02,156 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2017-09-11 12:01:02,156 INFO o.a.j.t.JMeterThread: Thread started: Application Management - Super Tenant 1-1
2017-09-11 12:01:04,482 INFO o.a.j.s.FileServer: Stored: /home/wso2/projects/wso2/iot/chathura/product-iots/product-iots/modules/integration/tests-integration/src/test/resources/jmeter-scripts/image.png
2017-09-11 12:01:04,525 INFO o.a.j.t.JMeterThread: Thread is done: Application Management - Super Tenant 1-1
2017-09-11 12:01:04,525 INFO o.a.j.t.JMeterThread: Thread finished: Application Management - Super Tenant 1-1
2017-09-11 12:01:04,526 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2017-09-11 12:01:04,526 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
2017-09-11 12:03:39,895 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2017-09-11 12:03:39,896 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2017-09-11 12:03:39,897 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2017-09-11 12:03:40,008 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Application Management - Super Tenant
2017-09-11 12:03:40,008 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group Application Management - Super Tenant.
2017-09-11 12:03:40,008 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2017-09-11 12:03:40,008 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false
2017-09-11 12:03:40,018 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2017-09-11 12:03:40,018 INFO o.a.j.t.JMeterThread: Thread started: Application Management - Super Tenant 1-1
2017-09-11 12:03:40,020 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2017-09-11 12:03:42,312 INFO o.a.j.t.JMeterThread: Thread is done: Application Management - Super Tenant 1-1
2017-09-11 12:03:42,312 INFO o.a.j.t.JMeterThread: Thread finished: Application Management - Super Tenant 1-1
2017-09-11 12:03:42,312 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2017-09-11 12:03:42,312 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
2017-09-11 12:07:13,180 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2017-09-11 12:07:13,180 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2017-09-11 12:07:13,181 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2017-09-11 12:07:13,321 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Application Management - Super Tenant
2017-09-11 12:07:13,321 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group Application Management - Super Tenant.
2017-09-11 12:07:13,321 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2017-09-11 12:07:13,321 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false
2017-09-11 12:07:13,332 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2017-09-11 12:07:13,332 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2017-09-11 12:07:13,332 INFO o.a.j.t.JMeterThread: Thread started: Application Management - Super Tenant 1-1
2017-09-11 12:07:15,869 INFO o.a.j.s.FileServer: Stored: /home/wso2/projects/wso2/iot/chathura/product-iots/product-iots/modules/integration/tests-integration/src/test/resources/jmeter-scripts/image.png
2017-09-11 12:07:15,910 INFO o.a.j.t.JMeterThread: Thread is done: Application Management - Super Tenant 1-1
2017-09-11 12:07:15,910 INFO o.a.j.t.JMeterThread: Thread finished: Application Management - Super Tenant 1-1
2017-09-11 12:07:15,910 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2017-09-11 12:07:15,911 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
2017-09-11 14:23:30,019 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2017-09-11 14:23:30,024 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2017-09-11 14:23:30,032 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2017-09-11 14:23:30,562 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Application Management - Super Tenant
2017-09-11 14:23:30,562 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group Application Management - Super Tenant.
2017-09-11 14:23:30,562 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2017-09-11 14:23:30,562 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false
2017-09-11 14:23:30,589 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2017-09-11 14:23:30,589 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2017-09-11 14:23:30,590 INFO o.a.j.t.JMeterThread: Thread started: Application Management - Super Tenant 1-1
2017-09-11 14:23:33,752 INFO o.a.j.t.JMeterThread: Thread is done: Application Management - Super Tenant 1-1
2017-09-11 14:23:33,753 INFO o.a.j.t.JMeterThread: Thread finished: Application Management - Super Tenant 1-1
2017-09-11 14:23:33,753 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2017-09-11 14:23:33,754 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
2017-09-11 14:24:35,246 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2017-09-11 14:24:35,246 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2017-09-11 14:24:35,247 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2017-09-11 14:24:35,361 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Application Management - Super Tenant
2017-09-11 14:24:35,361 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group Application Management - Super Tenant.
2017-09-11 14:24:35,362 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2017-09-11 14:24:35,362 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false
2017-09-11 14:24:35,380 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2017-09-11 14:24:35,380 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2017-09-11 14:24:35,381 INFO o.a.j.t.JMeterThread: Thread started: Application Management - Super Tenant 1-1
2017-09-11 14:24:37,901 INFO o.a.j.t.JMeterThread: Thread is done: Application Management - Super Tenant 1-1
2017-09-11 14:24:37,901 INFO o.a.j.t.JMeterThread: Thread finished: Application Management - Super Tenant 1-1
2017-09-11 14:24:37,901 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2017-09-11 14:24:37,901 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
2017-09-11 14:26:47,180 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2017-09-11 14:26:47,180 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2017-09-11 14:26:47,182 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2017-09-11 14:26:47,302 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Application Management - Super Tenant
2017-09-11 14:26:47,302 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group Application Management - Super Tenant.
2017-09-11 14:26:47,302 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2017-09-11 14:26:47,303 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false
2017-09-11 14:26:47,316 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2017-09-11 14:26:47,316 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2017-09-11 14:26:47,317 INFO o.a.j.t.JMeterThread: Thread started: Application Management - Super Tenant 1-1
2017-09-11 14:26:49,859 INFO o.a.j.t.JMeterThread: Thread is done: Application Management - Super Tenant 1-1
2017-09-11 14:26:49,859 INFO o.a.j.t.JMeterThread: Thread finished: Application Management - Super Tenant 1-1
2017-09-11 14:26:49,859 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2017-09-11 14:26:49,859 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
2017-09-11 14:30:37,092 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2017-09-11 14:30:37,092 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2017-09-11 14:30:37,093 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2017-09-11 14:30:37,207 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Application Management - Super Tenant
2017-09-11 14:30:37,207 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group Application Management - Super Tenant.
2017-09-11 14:30:37,207 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2017-09-11 14:30:37,207 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false
2017-09-11 14:30:37,220 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2017-09-11 14:30:37,220 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2017-09-11 14:30:37,221 INFO o.a.j.t.JMeterThread: Thread started: Application Management - Super Tenant 1-1
2017-09-11 14:30:39,716 INFO o.a.j.t.JMeterThread: Thread is done: Application Management - Super Tenant 1-1
2017-09-11 14:30:39,716 INFO o.a.j.t.JMeterThread: Thread finished: Application Management - Super Tenant 1-1
2017-09-11 14:30:39,717 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2017-09-11 14:30:39,717 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
2017-09-11 14:43:17,010 INFO o.a.j.s.FileServer: Set new base='/home/wso2/projects/wso2/iot/testing/appm/scripts'
2017-09-11 14:51:18,349 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2017-09-11 14:51:18,351 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2017-09-11 14:51:18,352 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2017-09-11 14:51:18,479 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : TokenGen
2017-09-11 14:51:18,479 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group TokenGen.
2017-09-11 14:51:18,479 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2017-09-11 14:51:18,480 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false
2017-09-11 14:51:18,485 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2017-09-11 14:51:18,485 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2017-09-11 14:51:18,485 INFO o.a.j.t.JMeterThread: Thread started: TokenGen 1-1
2017-09-11 14:51:20,803 INFO o.a.j.t.JMeterThread: Thread is done: TokenGen 1-1
2017-09-11 14:51:20,803 INFO o.a.j.t.JMeterThread: Thread finished: TokenGen 1-1
2017-09-11 14:51:20,804 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2017-09-11 14:51:20,804 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
2017-09-11 14:53:40,651 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2017-09-11 14:53:40,652 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2017-09-11 14:53:40,654 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2017-09-11 14:53:40,790 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : UnitTests
2017-09-11 14:53:40,790 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group UnitTests.
2017-09-11 14:53:40,790 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2017-09-11 14:53:40,791 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false
2017-09-11 14:53:40,791 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2017-09-11 14:53:40,791 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2017-09-11 14:53:40,791 INFO o.a.j.t.JMeterThread: Thread started: UnitTests 1-1
2017-09-11 14:53:41,079 INFO o.a.j.t.JMeterThread: Thread is done: UnitTests 1-1
2017-09-11 14:53:41,079 INFO o.a.j.t.JMeterThread: Thread finished: UnitTests 1-1
2017-09-11 14:53:41,081 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2017-09-11 14:53:41,081 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
2017-09-11 14:54:28,012 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2017-09-11 14:54:28,012 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2017-09-11 14:54:28,013 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2017-09-11 14:54:28,123 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : UnitTests
2017-09-11 14:54:28,123 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group UnitTests.
2017-09-11 14:54:28,124 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2017-09-11 14:54:28,124 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false
2017-09-11 14:54:28,128 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2017-09-11 14:54:28,128 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2017-09-11 14:54:28,128 INFO o.a.j.t.JMeterThread: Thread started: UnitTests 1-1
2017-09-11 14:54:28,385 INFO o.a.j.t.JMeterThread: Thread is done: UnitTests 1-1
2017-09-11 14:54:28,385 INFO o.a.j.t.JMeterThread: Thread finished: UnitTests 1-1
2017-09-11 14:54:28,385 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2017-09-11 14:54:28,385 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
2017-09-11 14:56:06,132 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2017-09-11 14:56:06,132 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2017-09-11 14:56:06,133 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2017-09-11 14:56:06,249 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : UnitTests
2017-09-11 14:56:06,249 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group UnitTests.
2017-09-11 14:56:06,249 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2017-09-11 14:56:06,249 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false
2017-09-11 14:56:06,254 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2017-09-11 14:56:06,254 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2017-09-11 14:56:06,254 INFO o.a.j.t.JMeterThread: Thread started: UnitTests 1-1
2017-09-11 14:56:06,349 INFO o.a.j.t.JMeterThread: Thread is done: UnitTests 1-1
2017-09-11 14:56:06,349 INFO o.a.j.t.JMeterThread: Thread finished: UnitTests 1-1
2017-09-11 14:56:06,350 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2017-09-11 14:56:06,350 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
2017-09-11 15:05:21,190 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2017-09-11 15:05:21,191 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2017-09-11 15:05:21,192 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2017-09-11 15:05:21,335 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : UnitTests
2017-09-11 15:05:21,335 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group UnitTests.
2017-09-11 15:05:21,336 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2017-09-11 15:05:21,336 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false
2017-09-11 15:05:21,336 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2017-09-11 15:05:21,336 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2017-09-11 15:05:21,337 INFO o.a.j.t.JMeterThread: Thread started: UnitTests 1-1
2017-09-11 15:05:21,454 INFO o.a.j.t.JMeterThread: Thread is done: UnitTests 1-1
2017-09-11 15:05:21,454 INFO o.a.j.t.JMeterThread: Thread finished: UnitTests 1-1
2017-09-11 15:05:21,454 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2017-09-11 15:05:21,454 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
2017-09-11 15:06:50,344 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2017-09-11 15:06:50,345 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2017-09-11 15:06:50,346 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2017-09-11 15:06:50,484 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : UnitTests
2017-09-11 15:06:50,485 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group UnitTests.
2017-09-11 15:06:50,485 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2017-09-11 15:06:50,485 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false
2017-09-11 15:06:50,485 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2017-09-11 15:06:50,485 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2017-09-11 15:06:50,486 INFO o.a.j.t.JMeterThread: Thread started: UnitTests 1-1
2017-09-11 15:06:50,581 INFO o.a.j.t.JMeterThread: Thread is done: UnitTests 1-1
2017-09-11 15:06:50,581 INFO o.a.j.t.JMeterThread: Thread finished: UnitTests 1-1
2017-09-11 15:06:50,581 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2017-09-11 15:06:50,581 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
2017-09-11 15:07:27,565 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2017-09-11 15:07:27,567 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2017-09-11 15:07:27,567 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2017-09-11 15:07:27,681 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : UnitTests
2017-09-11 15:07:27,681 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group UnitTests.
2017-09-11 15:07:27,681 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2017-09-11 15:07:27,681 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 perThread=1000.0 delayedStart=false
2017-09-11 15:07:27,681 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2017-09-11 15:07:27,681 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2017-09-11 15:07:27,684 INFO o.a.j.t.JMeterThread: Thread started: UnitTests 1-1
2017-09-11 15:07:27,759 INFO o.a.j.t.JMeterThread: Thread is done: UnitTests 1-1
2017-09-11 15:07:27,759 INFO o.a.j.t.JMeterThread: Thread finished: UnitTests 1-1
2017-09-11 15:07:27,760 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2017-09-11 15:07:27,760 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
Loading…
Cancel
Save