/******************************************************************************* * Copyright (c) 2013-2015 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.server.californium.impl; import java.net.InetAddress; import java.net.InetSocketAddress; import java.nio.charset.StandardCharsets; import org.eclipse.leshan.Link; import org.eclipse.leshan.LwM2m; import org.eclipse.leshan.core.request.BindingMode; import org.eclipse.leshan.server.registration.Registration; import org.eclipse.leshan.server.registration.RegistrationStore; import org.eclipse.leshan.server.registration.RegistrationUpdate; import org.eclipse.leshan.server.registration.UpdatedRegistration; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class InMemoryRegistrationStoreTest { RegistrationStore store; String ep = "urn:endpoint"; InetAddress address; int port = 23452; Long lifetime = 10000L; String sms = "0171-32423545"; BindingMode binding = BindingMode.UQS; Link[] objectLinks = Link.parse("</3>".getBytes(StandardCharsets.UTF_8)); String registrationId = "4711"; Registration registration; @Before public void setUp() throws Exception { address = InetAddress.getLocalHost(); store = new InMemoryRegistrationStore(); } @Test public void update_registration_keeps_properties_unchanged() { givenASimpleRegistration(lifetime); store.addRegistration(registration); RegistrationUpdate update = new RegistrationUpdate(registrationId, address, port, null, null, null, null); UpdatedRegistration updatedRegistration = store.updateRegistration(update); Assert.assertEquals(lifetime, updatedRegistration.getUpdatedRegistration().getLifeTimeInSec()); Assert.assertSame(binding, updatedRegistration.getUpdatedRegistration().getBindingMode()); Assert.assertEquals(sms, updatedRegistration.getUpdatedRegistration().getSmsNumber()); Assert.assertEquals(registration, updatedRegistration.getPreviousRegistration()); Registration reg = store.getRegistrationByEndpoint(ep); Assert.assertEquals(lifetime, reg.getLifeTimeInSec()); Assert.assertSame(binding, reg.getBindingMode()); Assert.assertEquals(sms, reg.getSmsNumber()); } @Test public void client_registration_sets_time_to_live() { givenASimpleRegistration(lifetime); store.addRegistration(registration); Assert.assertTrue(registration.isAlive()); } @Test public void update_registration_to_extend_time_to_live() { givenASimpleRegistration(0L); store.addRegistration(registration); Assert.assertFalse(registration.isAlive()); RegistrationUpdate update = new RegistrationUpdate(registrationId, address, port, lifetime, null, null, null); UpdatedRegistration updatedRegistration = store.updateRegistration(update); Assert.assertTrue(updatedRegistration.getUpdatedRegistration().isAlive()); Registration reg = store.getRegistrationByEndpoint(ep); Assert.assertTrue(reg.isAlive()); } private void givenASimpleRegistration(Long lifetime) { Registration.Builder builder = new Registration.Builder(registrationId, ep, address, port, InetSocketAddress.createUnresolved("localhost", LwM2m.DEFAULT_COAP_PORT)); registration = builder.lifeTimeInSec(lifetime).smsNumber(sms).bindingMode(binding).objectLinks(objectLinks) .build(); } }