package com.voxeo.moho.reg.impl.cassandra;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.net.URI;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.voxeo.moho.Endpoint;
import com.voxeo.moho.event.RegisterEvent.Contact;
public class CassandraRegisterStoreTest extends BaseEmbededServerSetupTest {
private static CassandraRegisterStore _cassandraRegisterStore;
@Before
public void setUp() throws Exception {
_cassandraRegisterStore = new CassandraRegisterStore();
HashMap<String, String> config = new HashMap<String, String>();
config.put("databaseAddress", "localhost:9170");
_cassandraRegisterStore.init(config);
}
@Test
public void testGetContact() {
MockEndPoint endPoint1 = new MockEndPoint("sip:test1@voxeo.com");
MockEndPoint endPoint2 = new MockEndPoint("sip:Alex@voxeo.com");
MockContact mockContact1 = new MockContact("sip:test1@127.0.0.1");
MockContact mockContact3 = new MockContact("sip:test1@172.21.0.191");
MockContact mockContact2 = new MockContact("sip:alex@172.21.0.193");
_cassandraRegisterStore.add(endPoint1, mockContact1);
_cassandraRegisterStore.add(endPoint1, mockContact3);
_cassandraRegisterStore.add(endPoint2, mockContact2);
Contact contact = _cassandraRegisterStore.getContact(endPoint1, new MockEndPoint("sip:test1@127.0.0.1"));
assertNotNull(contact);
assertEquals("sip:test1@127.0.0.1", contact.getEndpoint().getURI().toString());
Collection<Contact> contacts = _cassandraRegisterStore.getContacts(endPoint1);
assertNotNull(contacts);
assertTrue(contacts.size() == 2);
Iterator<Contact> iterator = contacts.iterator();
assertEquals("sip:test1@127.0.0.1", iterator.next().getEndpoint().getURI().toString());
assertEquals("sip:test1@172.21.0.191", iterator.next().getEndpoint().getURI().toString());
contact = _cassandraRegisterStore.getContact(endPoint2, new MockEndPoint("sip:alex@172.21.0.193"));
assertNotNull(contact);
assertEquals("sip:alex@172.21.0.193", contact.getEndpoint().getURI().toString());
}
@Test
public void testIsExisting() {
MockEndPoint endPoint1 = new MockEndPoint("sip:test1@voxeo.com");
MockEndPoint endPoint2 = new MockEndPoint("sip:Alex@voxeo.com");
MockContact mockContact1 = new MockContact("sip:test1@127.0.0.1");
MockContact mockContact3 = new MockContact("sip:test1@172.21.0.191");
MockContact mockContact2 = new MockContact("sip:alex@172.21.0.193");
_cassandraRegisterStore.add(endPoint1, mockContact1);
_cassandraRegisterStore.add(endPoint1, mockContact3);
_cassandraRegisterStore.add(endPoint2, mockContact2);
assertTrue(_cassandraRegisterStore.isExisting(endPoint1, mockContact1));
assertTrue(_cassandraRegisterStore.isExisting(endPoint1));
}
@Test
public void testRemoveContact() {
MockEndPoint endPoint1 = new MockEndPoint("sip:test1@voxeo.com");
MockEndPoint endPoint2 = new MockEndPoint("sip:Alex@voxeo.com");
MockContact mockContact1 = new MockContact("sip:test1@127.0.0.1");
MockContact mockContact3 = new MockContact("sip:test1@172.21.0.191");
MockContact mockContact2 = new MockContact("sip:alex@172.21.0.193");
_cassandraRegisterStore.add(endPoint1, mockContact1);
_cassandraRegisterStore.add(endPoint1, mockContact3);
_cassandraRegisterStore.add(endPoint2, mockContact2);
_cassandraRegisterStore.remove(endPoint1, mockContact1);
assertFalse(_cassandraRegisterStore.isExisting(endPoint1, mockContact1));
_cassandraRegisterStore.remove(endPoint2);
assertTrue(_cassandraRegisterStore.getContacts(endPoint2).size() == 0);
}
@After
public void tearDown() throws Exception {
_cassandraRegisterStore.destroy();
_cassandraRegisterStore = null;
}
public static class MockEndPoint implements Endpoint {
URI _uri;
public MockEndPoint(String uri) {
_uri = URI.create(uri);
}
@Override
public String getName() {
// TODO Auto-generated method stub
return null;
}
@Override
public URI getURI() {
return _uri;
}
}
public static class MockContact implements Contact {
private static final long serialVersionUID = 8884928460090599577L;
String _uri;
public MockContact(String uri) {
_uri = uri;
}
@Override
public Endpoint getEndpoint() {
return new MockEndPoint(_uri);
}
@Override
public int getExpiration() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean isWildCard() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isExpired() {
// TODO Auto-generated method stub
return false;
}
}
}