/******************************************************************************* * Copyright (c) 2016 Sierra Wireless and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Eclipse Distribution License v1.0 which accompany this distribution. * * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.html. * * Contributors: * Sierra Wireless - initial API and implementation *******************************************************************************/ package org.eclipse.leshan.integration.tests; import java.net.InetAddress; import java.net.InetSocketAddress; import java.util.Collection; import org.eclipse.leshan.core.node.codec.DefaultLwM2mNodeDecoder; import org.eclipse.leshan.core.observation.Observation; import org.eclipse.leshan.server.californium.LeshanServerBuilder; import org.eclipse.leshan.server.cluster.RedisRegistrationStore; import org.eclipse.leshan.server.impl.InMemorySecurityStore; import org.eclipse.leshan.server.model.StaticModelProvider; import org.eclipse.leshan.server.registration.Registration; import org.eclipse.leshan.server.registration.RegistrationListener; import org.eclipse.leshan.server.registration.RegistrationUpdate; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.util.Pool; public class RedisIntegrationTestHelper extends IntegrationTestHelper { @Override public void createServer() { LeshanServerBuilder builder = new LeshanServerBuilder(); StaticModelProvider modelProvider = new StaticModelProvider(createObjectModels()); builder.setObjectModelProvider(modelProvider); DefaultLwM2mNodeDecoder decoder = new DefaultLwM2mNodeDecoder(); builder.setDecoder(decoder); builder.setLocalAddress(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0)); builder.setLocalSecureAddress(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0)); builder.setSecurityStore(new InMemorySecurityStore()); // Create redis store String redisURI = System.getenv("REDIS_URI"); if (redisURI == null) redisURI = ""; Pool<Jedis> jedis = new JedisPool(redisURI); builder.setRegistrationStore(new RedisRegistrationStore(jedis)); // Build server ! server = builder.build(); // monitor client registration resetLatch(); server.getRegistrationService().addListener(new RegistrationListener() { @Override public void updated(RegistrationUpdate update, Registration updatedRegistration, Registration previousRegistration) { if (updatedRegistration.getEndpoint().equals(getCurrentEndpoint())) { updateLatch.countDown(); } } @Override public void unregistered(Registration registration, Collection<Observation> observations, boolean expired) { if (registration.getEndpoint().equals(getCurrentEndpoint())) { deregisterLatch.countDown(); } } @Override public void registered(Registration registration) { if (registration.getEndpoint().equals(getCurrentEndpoint())) { last_registration = registration; registerLatch.countDown(); } } }); } }