Commit 09091b54 authored by Ghada Gharbi's avatar Ghada Gharbi

Merge branch 'onem2m' into 'develop'

Onem2m

See merge request !106
parents 36a18b85 38fbcfcc
Pipeline #3108 failed with stage
in 0 seconds
......@@ -42,9 +42,12 @@ LIST = automated_iut-coap_client-coapthon \
testing_tool-interoperability-lwm2m \
reference_iut-coap_server \
reference_iut-coap_client \
automated_iut-onem2m_adn \
automated_iut-onem2m_server-eclipse_om2m \
automated_iut-lwm2m_server-leshan \
automated_iut-lwm2m_client-leshan \
info:
@echo $(info_message)
......@@ -331,8 +334,13 @@ _docker-build-lwm2m-additional-resources:
_docker-build-onem2m-additional-resources:
@echo "Starting to build onem2m-additional-resources.. "
@echo "TBD"
docker build --quiet -t automated_iut-onem2m_server-eclipse_om2m-v$(version) -f automation/onem2m_cse_eclipse_om2m/Dockerfile .
docker tag automated_iut-onem2m_server-eclipse_om2m-v$(version):latest automated_iut-onem2m_server-eclipse_om2m
docker build --quiet -t automated_iut-onem2m_adn-v$(version) -f automation/onem2m_adn_etsi_implementation/Dockerfile .
docker tag automated_iut-onem2m_adn-v$(version):latest automated_iut-onem2m_adn
_docker-build-comi-additional-resources:
@echo "Starting to build comi-additional-resources.. "
docker build --quiet -t automated_iut-comi_server-acklio-v$(version) -f automation/comi_server_acklio/Dockerfile .
......
FROM ubuntu:16.04
RUN apt-get update
RUN apt-get -y -qq install apt-utils
RUN apt-get -y -qq install python3-dev
RUN apt-get -y -qq install build-essential
RUN apt-get -y -qq install python3-setuptools
RUN apt-get -y -qq install python3-pip
RUN apt-get -y -qq install python-pip
RUN apt-get -y -qq install supervisor
RUN apt-get -y -qq install net-tools
RUN apt-get -y install iputils-ping
RUN apt-get -y -qq install make
# upgrade pip
RUN python -m pip install --upgrade pip
RUN python3 -m pip install --upgrade pip
# requirement for californium
RUN apt-get -y install default-jre
ADD . /ioppytest
ENV PATH="/ioppytest:$PATH"
WORKDIR /ioppytest
# install aux ioppytest packages
RUN python -m pip install ioppytest-agent
RUN python3 -m pip install ioppytest-utils
# requirements on automated-iut python code
RUN python3 -m pip install -r automation/requirements.txt
# temp PATCH for avoiding https://github.com/celery/py-amqp/issues/191
RUN python3 -m pip install -Iv amqp==2.2.2
RUN python -m pip install -Iv amqp==2.2.2
EXPOSE 5671 5672
# launch processes
CMD ["/usr/bin/supervisord", "--nodaemon", "--configuration", "automation/onem2m_adn_etsi_implementation/supervisor.conf"]
# -*- coding: utf-8 -*-
# !/usr/bin/env python3
import subprocess
from automation import COAP_SERVER_HOST, COAP_SERVER_PORT, COAP_CLIENT_HOST, LOG_LEVEL
from automation.automated_iut import *
logger = logging.getLogger()
logger.setLevel(LOG_LEVEL)
default_coap_server_base_url = 'coap://[%s]:%s' % (COAP_SERVER_HOST, COAP_SERVER_PORT)
coap_host_address = COAP_CLIENT_HOST
class ADN(AutomatedIUT):
"""
ADN implementation expects:
java -jar (..)/adn.jar -h [bbbb::2] -p 5683 -ci server -cn server -o Cae-admin -t TD_M2M_NH_01
"""
component_id = 'automated_iut-onem2m_adn'
node = 'adn'
iut_base_cmd = 'java -jar automation/onem2m_adn_etsi_implementation/target/adn/adn.jar -h [bbbb::2] -p 5683 -ci server -cn server -o Cae-admin -t'
# mapping message's stimuli id -> testcase id
stimuli_to_testcase_map = {
'TD_M2M_NH_01_step_01': 'TD_M2M_NH_01',
'TD_M2M_NH_06_step_01': 'TD_M2M_NH_06',
'TD_M2M_NH_07_step_01': 'TD_M2M_NH_07',
'TD_M2M_NH_08_step_01': 'TD_M2M_NH_08',
'TD_M2M_NH_09_step_01': 'TD_M2M_NH_09',
'TD_M2M_NH_10_step_01': 'TD_M2M_NH_10',
'TD_M2M_NH_11_step_01': 'TD_M2M_NH_11',
'TD_M2M_NH_12_step_01': 'TD_M2M_NH_12',
'TD_M2M_NH_13_step_01': 'TD_M2M_NH_13',
'TD_M2M_NH_14_step_01': 'TD_M2M_NH_14',
'TD_M2M_NH_15_step_01': 'TD_M2M_NH_15',
'TD_M2M_NH_17_step_01': 'TD_M2M_NH_17',
'TD_M2M_NH_49_step_01': 'TD_M2M_NH_49',
'TD_M2M_NH_50_step_01': 'TD_M2M_NH_50',
'TD_M2M_NH_71_step_01': 'TD_M2M_NH_71',
'TD_M2M_NH_72_step_01': 'TD_M2M_NH_72',
'TD_M2M_NH_18_step_01': 'TD_M2M_NH_18',
'TD_M2M_NH_19_step_01': 'TD_M2M_NH_19',
'TD_M2M_NH_20_step_01': 'TD_M2M_NH_20',
'TD_M2M_NH_21_step_01': 'TD_M2M_NH_21',
'TD_M2M_NH_22_step_01': 'TD_M2M_NH_22',
'TD_M2M_NH_23_step_01': 'TD_M2M_NH_23',
'TD_M2M_NH_24_step_01': 'TD_M2M_NH_24',
'TD_M2M_NH_25_step_01': 'TD_M2M_NH_25',
'TD_M2M_NH_26_step_01': 'TD_M2M_NH_26',
'TD_M2M_NH_27_step_01': 'TD_M2M_NH_27',
'TD_M2M_NH_28_step_01': 'TD_M2M_NH_28',
'TD_M2M_NH_29_step_01': 'TD_M2M_NH_29',
'TD_M2M_NH_30_step_01': 'TD_M2M_NH_30',
'TD_M2M_NH_31_step_01': 'TD_M2M_NH_31',
'TD_M2M_NH_32_step_01': 'TD_M2M_NH_32',
'TD_M2M_NH_33_step_01': 'TD_M2M_NH_33',
'TD_M2M_NH_34_step_01': 'TD_M2M_NH_34',
'TD_M2M_NH_35_step_01': 'TD_M2M_NH_36',
'TD_M2M_NH_36_step_01': 'TD_M2M_NH_36',
'TD_M2M_NH_37_step_01': 'TD_M2M_NH_37',
'TD_M2M_NH_38_step_01': 'TD_M2M_NH_38',
}
implemented_stimuli_list = list(stimuli_to_testcase_map.keys())
implemented_testcases_list = list(stimuli_to_testcase_map.values())
def __init__(self):
super().__init__(self.node)
logger.info('starting %s [ %s ]' % (self.node, self.component_id))
def _execute_verify(self, verify_step_id):
logger.warning('Ignoring: %s. No auto-iut mechanism for verify step implemented.' % verify_step_id)
def _execute_stimuli(self, stimuli_step_id, addr):
logger.info('got stimuli execute request: \n\tSTIMULI_ID=%s,\n\tTARGET_ADDRESS=%s' % (stimuli_step_id, addr))
#if addr and addr is not "":
# target_base_url = 'coap://[%s]:%s' % (addr, COAP_SERVER_PORT)
#else:
# target_base_url = default_coap_server_base_url
try:
# Generate IUT CMD for stimuli
cmd = self.iut_base_cmd
#cmd += ' {option} {value}'.format(option='-u', value=target_base_url)
cmd += ' {option} {value}'.format(option='-t', value=self.stimuli_to_testcase_map[stimuli_step_id])
# Execute IUT CMD for stimuli
logger.info('Spawning process with : %s' % cmd)
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
proc.wait(timeout=STIMULI_HANDLER_TOUT)
# GET stdout IUT CMD for stimuli
output = ''
while proc.poll() is None:
output += str(proc.stdout.readline())
output += str(proc.stdout.read())
logger.info('EXECUTED: %s' % stimuli_step_id)
logger.info('Process STDOUT: %s' % output)
except subprocess.TimeoutExpired as tout:
logger.warning('Process TIMEOUT. info: %s' % str(tout))
except Exception as e:
logging.error('Error found on automated-iut while tryning to execute stimuli %s' % stimuli_step_id)
logging.error(e)
def _execute_configuration(self, testcase_id, node):
# no config / reset needed for implementation
return coap_host_address
if __name__ == '__main__':
try:
iut = ADN()
iut.start()
iut.join()
except Exception as e:
logger.error(e)
[unix_http_server]
file=/tmp/supervisor.sock ; (the path to the socket file)
[supervisord]
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10 ; (num of main logfile rotation backups;default 10)
loglevel=info ; (log level;default info; others: debug,warn,trace)
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false ; (start in foreground if true;default false)
minfds=1024 ; (min. avail startup file descriptors;default 1024)
minprocs=200 ; (min. avail process descriptors;default 200)
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
[program:agent]
command = ioppytest-agent connect
--url %(ENV_AMQP_URL)s
--exchange %(ENV_AMQP_EXCHANGE)s
--name adn
--force-bootstrap
--ipv6-prefix bbbb
--ipv6-host 1
user=root
stopsignal=INT
stopasgroup=true
autorestart=false
loglevel=debug
; for sending logs to docker
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
;redirect_stderr=true
;stdout_logfile = /var/log/agent-adn-stdout.log
;stdout_logfile_maxbytes = 10MB
;stdout_logfile_backups = 5
[program:init]
command = sh -c "sleep 6;chmod 777 automation/onem2m_adn_etsi_implementation/target/init/start.sh;./start.sh"
autorestart=false
stopsignal=INT
stopasgroup=true
loglevel=debug
; for sending logs to docker
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
;redirect_stderr=true
;stdout_logfile = /var/log/automated_iut-init-stdout.log
[program:automated-iut]
command = sh -c "sleep 6;/usr/bin/python3 -m automation.onem2m_adn_etsi_implementation.automated_iut"
autorestart=false
stopsignal=INT
stopasgroup=true
loglevel=debug
; for sending logs to docker
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
;redirect_stderr=true
;stdout_logfile = /var/log/automated_iut-adn-stdout.log
#Californium CoAP Properties file
#Sun Jan 28 23:20:48 CET 2018
DEFAULT_ENDPOINT_THREAD_COUNT=1
MAX_TRANSMIT_WAIT=93000
MAX_RETRANSMIT=4
UDP_CONNECTOR_SENDER_THREAD_COUNT=1
DEFAULT_LEISURE=5000
NOTIFICATION_MAX_AGE=128000
CROP_ROTATION_PERIOD=2000
USE_RANDOM_MID_START=true
ACK_TIMEOUT_SCALE=2
UDP_CONNECTOR_DATAGRAM_SIZE=2000
DEDUPLICATOR=DEDUPLICATOR_MARK_AND_SWEEP
HTTP_PORT=8080
NSTART=1
NOTIFICATION_CHECK_INTERVAL=86400000
MAX_MESSAGE_SIZE=1024
DEFAULT_COAP_PORT=5683
DEFAULT_BLOCK_SIZE=512
UDP_CONNECTOR_RECEIVE_BUFFER=0
ACK_TIMEOUT=2000
HTTP_CACHE_SIZE=32
UDP_CONNECTOR_OUT_CAPACITY=2147483647
HTTP_SERVER_SOCKET_BUFFER_SIZE=8192
ACK_RANDOM_FACTOR=1.5
MARK_AND_SWEEP_INTERVAL=10000
NOTIFICATION_CHECK_INTERVAL_COUNT=100
HTTP_CACHE_RESPONSE_MAX_AGE=86400
UDP_CONNECTOR_LOG_PACKETS=false
PROBING_RATE=1.0
NOTIFICATION_REREGISTRATION_BACKOFF=2000
EXCHANGE_LIFECYCLE=247000
SERVER_THRESD_NUMER=4
UDP_CONNECTOR_RECEIVER_THREAD_COUNT=1
UDP_CONNECTOR_SEND_BUFFER=0
HTTP_SERVER_SOCKET_TIMEOUT=100000
USE_RANDOM_TOKEN_START=true
#Californium CoAP Properties file
#Sun Jan 28 23:20:48 CET 2018
DEFAULT_ENDPOINT_THREAD_COUNT=1
MAX_TRANSMIT_WAIT=93000
MAX_RETRANSMIT=4
UDP_CONNECTOR_SENDER_THREAD_COUNT=1
DEFAULT_LEISURE=5000
NOTIFICATION_MAX_AGE=128000
CROP_ROTATION_PERIOD=2000
USE_RANDOM_MID_START=true
ACK_TIMEOUT_SCALE=2
UDP_CONNECTOR_DATAGRAM_SIZE=2000
DEDUPLICATOR=DEDUPLICATOR_MARK_AND_SWEEP
HTTP_PORT=8080
NSTART=1
NOTIFICATION_CHECK_INTERVAL=86400000
MAX_MESSAGE_SIZE=1024
DEFAULT_COAP_PORT=5683
DEFAULT_BLOCK_SIZE=512
UDP_CONNECTOR_RECEIVE_BUFFER=0
ACK_TIMEOUT=2000
HTTP_CACHE_SIZE=32
UDP_CONNECTOR_OUT_CAPACITY=2147483647
HTTP_SERVER_SOCKET_BUFFER_SIZE=8192
ACK_RANDOM_FACTOR=1.5
MARK_AND_SWEEP_INTERVAL=10000
NOTIFICATION_CHECK_INTERVAL_COUNT=100
HTTP_CACHE_RESPONSE_MAX_AGE=86400
UDP_CONNECTOR_LOG_PACKETS=false
PROBING_RATE=1.0
NOTIFICATION_REREGISTRATION_BACKOFF=2000
EXCHANGE_LIFECYCLE=247000
SERVER_THRESD_NUMER=4
UDP_CONNECTOR_RECEIVER_THREAD_COUNT=1
UDP_CONNECTOR_SEND_BUFFER=0
HTTP_SERVER_SOCKET_TIMEOUT=100000
USE_RANDOM_TOKEN_START=true
cd automation/onem2m_adn_etsi_implementation/target/init;
java -jar init.jar -h [bbbb::2] -p 5683 -ci server -cn server -o Cae-admin
FROM ubuntu:16.04
MAINTAINER federico.sismondi@inria.fr
RUN apt-get update -y -qq && apt-get -y -qq install python-dev
RUN apt-get -y install python-pip
RUN apt-get -y -qq install python3-dev
RUN apt-get -y install python3-setuptools
RUN apt-get -y install python3-pip
RUN apt-get -y install supervisor
RUN apt-get -y install iputils-ping
RUN apt-get -y install net-tools
# upgrade pip
RUN python -m pip install --upgrade pip
RUN python3 -m pip install --upgrade pip
# requirement for californium
RUN apt-get -y install default-jre --fix-missing
ADD . /ioppytest
ENV PATH="/ioppytest:$PATH"
WORKDIR /ioppytest
# install aux ioppytest packages
RUN python -m pip install ioppytest-agent
RUN python3 -m pip install ioppytest-utils
# requirements on automated-iut python code
RUN python3 -m pip install -r automation/requirements.txt
# temp PATCH for avoiding https://github.com/celery/py-amqp/issues/191
RUN python3 -m pip install -Iv amqp==2.2.2
RUN python -m pip install -Iv amqp==2.2.2
EXPOSE 5671 5672
# launch processes
CMD ["/usr/bin/supervisord", "--nodaemon", "--configuration", "automation/onem2m_cse_eclipse_om2m/supervisor.conf"]
# -*- coding: utf-8 -*-
# !/usr/bin/env python3
import os
import subprocess
from ioppytest import TMPDIR
#from automated_IUTs import COAP_SERVER_PORT, COAP_SERVER_HOST, COAP_CLIENT_HOST, LOG_LEVEL
from automation.automated_iut import *
logger = logging.getLogger()
logger.setLevel(LOG_LEVEL)
logger = logging.getLogger()
logger.setLevel(LOG_LEVEL)
# timeout in seconds
STIMULI_HANDLER_TOUT = 15
class onem2mServer(AutomatedIUT):
component_id = 'automated_iut-onem2m_server-eclipse_om2m'
node = 'cse'
process_log_file = os.path.join(TMPDIR, component_id + '.log')
iut_cmd = [
'sh',
'automation/onem2m_cse_eclipse_om2m/in-cse/start.sh',
]
def __init__(self):
super().__init__(self.node)
logging.info('starting %s [ %s ]' % (self.node, self.component_id))
logging.info('spawning process %s' % str(self.iut_cmd))
self._launch_automated_iut_process()
def _execute_verify(self, verify_step_id):
logging.warning('Ignoring: %s. No auto-iut mechanism for verify step implemented.' % verify_step_id)
def _execute_stimuli(self, stimuli_step_id, addr):
pass
def _launch_automated_iut_process(self):
logging.info("Launching IUT with: %s" % self.iut_cmd)
logging.info('IUT-automated process logging into %s' % self.process_log_file)
with open(self.process_log_file, "w") as outfile:
subprocess.Popen(self.iut_cmd, stdout=outfile) # subprocess.Popen does not block
def _execute_configuration(self, testcase_id, node):
# should we restart process?
return None
if __name__ == '__main__':
try:
iut = onem2mServer()
iut.start()
iut.join()
except Exception as e:
logger.error(e)
#Californium CoAP Properties file
#Sun Nov 26 17:11:42 CET 2017
DEFAULT_ENDPOINT_THREAD_COUNT=1
MAX_TRANSMIT_WAIT=93000
MAX_RETRANSMIT=4
UDP_CONNECTOR_SENDER_THREAD_COUNT=1
DEFAULT_LEISURE=5000
NOTIFICATION_MAX_AGE=128000
CROP_ROTATION_PERIOD=2000
USE_RANDOM_MID_START=true
ACK_TIMEOUT_SCALE=2
UDP_CONNECTOR_DATAGRAM_SIZE=2000
DEDUPLICATOR=DEDUPLICATOR_MARK_AND_SWEEP
HTTP_PORT=8080
NSTART=1
NOTIFICATION_CHECK_INTERVAL=86400000
MAX_MESSAGE_SIZE=1024
DEFAULT_COAP_PORT=5683
DEFAULT_BLOCK_SIZE=512
UDP_CONNECTOR_RECEIVE_BUFFER=0
ACK_TIMEOUT=2000
HTTP_CACHE_SIZE=32
UDP_CONNECTOR_OUT_CAPACITY=2147483647
HTTP_SERVER_SOCKET_BUFFER_SIZE=8192
ACK_RANDOM_FACTOR=1.5
MARK_AND_SWEEP_INTERVAL=10000
NOTIFICATION_CHECK_INTERVAL_COUNT=100
HTTP_CACHE_RESPONSE_MAX_AGE=86400
UDP_CONNECTOR_LOG_PACKETS=false
PROBING_RATE=1.0
NOTIFICATION_REREGISTRATION_BACKOFF=2000
EXCHANGE_LIFECYCLE=247000
SERVER_THRESD_NUMER=4
UDP_CONNECTOR_RECEIVER_THREAD_COUNT=1
UDP_CONNECTOR_SEND_BUFFER=0
HTTP_SERVER_SOCKET_TIMEOUT=100000
USE_RANDOM_TOKEN_START=true
<?xml version='1.0' encoding='UTF-8'?>
<?artifactRepository version='1.1.0'?>
<repository name='Bundle pool' type='org.eclipse.equinox.p2.artifact.repository.simpleRepository' version='1'>
<properties size='2'>
<property name='p2.system' value='true'/>
<property name='p2.timestamp' value='1511712316151'/>
</properties>
<mappings size='3'>
<rule filter='(&amp; (classifier=osgi.bundle))' output='${repoUrl}/plugins/${id}_${version}.jar'/>
<rule filter='(&amp; (classifier=binary))' output='${repoUrl}/binary/${id}_${version}'/>
<rule filter='(&amp; (classifier=org.eclipse.update.feature))' output='${repoUrl}/features/${id}_${version}.jar'/>
</mappings>
<artifacts size='40'>
<artifact classifier='osgi.bundle' id='org.eclipse.om2m.webapp.resourcesbrowser.json' version='1.0.0.20171126-1605'>
<properties size='1'>
<property name='download.size' value='155449'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.jetty.http' version='9.4.5.v20170502'>
<properties size='1'>
<property name='download.size' value='175060'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.jetty.continuation' version='9.4.5.v20170502'>
<properties size='1'>
<property name='download.size' value='23359'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='javax.xml' version='1.3.4.v201005080400'>
<properties size='1'>
<property name='download.size' value='237996'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.equinox.http.jetty' version='3.4.0.v20170503-2025'>
<properties size='1'>
<property name='download.size' value='28028'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.equinox.event' version='1.4.0.v20170105-1446'>
<properties size='1'>
<property name='download.size' value='34721'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.equinox.console' version='1.1.300.v20170512-2111'>
<properties size='1'>
<property name='download.size' value='120758'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.osgi' version='3.12.50.v20170928-1321'>
<properties size='1'>
<property name='download.size' value='1387612'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.om2m.persistence.service' version='1.0.0.20171126-1605'>
<properties size='1'>
<property name='download.size' value='6492'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.om2m.binding.mqtt' version='1.0.0.20171126-1605'>
<properties size='1'>
<property name='download.size' value='180339'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.jetty.servlet' version='9.4.5.v20170502'>
<properties size='1'>
<property name='download.size' value='119775'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.apache.felix.gogo.runtime' version='0.10.0.v201209301036'>
<properties size='1'>
<property name='download.size' value='80249'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.om2m.persistence.eclipselink' version='1.0.0.20171126-1605'>
<properties size='1'>
<property name='download.size' value='10311811'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.equinox.launcher' version='1.4.0.v20161219-1356'>
<properties size='1'>
<property name='download.size' value='54427'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.apache.commons.logging' version='1.1.1.v201101211721'>
<properties size='1'>
<property name='download.size' value='74239'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.om2m.webapp.dashboard' version='1.0.0.20171126-1605'>
<properties size='1'>
<property name='download.size' value='1719636'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.om2m.core' version='1.0.0.20171126-1605'>
<properties size='1'>
<property name='download.size' value='171227'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.om2m.binding.http' version='1.0.0.20171126-1605'>
<properties size='1'>
<property name='download.size' value='31882'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.equinox.http.servlet' version='1.4.0.v20170524-1452'>
<properties size='1'>
<property name='download.size' value='199903'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.osgi.services' version='3.6.0.v20170228-1906'>
<properties size='1'>
<property name='download.size' value='121220'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.apache.felix.gogo.command' version='0.10.0.v201209301215'>
<properties size='1'>
<property name='download.size' value='57646'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.jetty.server' version='9.4.5.v20170502'>
<properties size='1'>
<property name='download.size' value='603614'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.jetty.util' version='9.4.5.v20170502'>
<properties size='1'>
<property name='download.size' value='479514'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.om2m.commons' version='1.0.0.20171126-1605'>
<properties size='1'>
<property name='download.size' value='386858'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.om2m.binding.service' version='1.0.0.20171126-1605'>
<properties size='1'>
<property name='download.size' value='3116'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.om2m.binding.websocket' version='1.0.0.20171126-1605'>
<properties size='1'>
<property name='download.size' value='1559765'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='javax.servlet' version='3.1.0.v201410161800'>
<properties size='1'>
<property name='download.size' value='105237'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.apache.felix.gogo.shell' version='0.10.0.v201212101605'>
<properties size='1'>
<property name='download.size' value='60827'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.om2m.datamapping.jaxb' version='1.0.0.20171126-1605'>
<properties size='1'>
<property name='download.size' value='7163'/>
</properties>
</artifact>
<artifact classifier='osgi.bundle' id='org.eclipse.om2m.datamapping.service' version='1.0.0.20171126-1605'>