Package com.opengamma.livedata.server

Source Code of com.opengamma.livedata.server.RedisLastKnownValueStoreProviderTest

/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.livedata.server;

import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue;

import org.fudgemsg.FudgeMsg;
import org.fudgemsg.MutableFudgeMsg;
import org.testng.annotations.Test;

import com.opengamma.id.ExternalId;
import com.opengamma.util.fudgemsg.OpenGammaFudgeContext;
import com.opengamma.util.test.TestGroup;

/**
* A full unit test for {@link RedisLastKnownValueStoreProvider} and
* also {@link RedisLastKnownValueStore}.
*/
@Test(groups = TestGroup.INTEGRATION)
public class RedisLastKnownValueStoreProviderTest {
  // TODO kirk 2012-07-18 -- This needs to be moved to external properties.
  private static final String REDIS_SERVER = "redis-lx-1";
 
  static String generatePrefix(String testName) {
    StringBuilder sb = new StringBuilder();
    sb.append(System.getProperty("user.name"));
    sb.append("-");
    sb.append(testName);
    sb.append("-");
    sb.append(System.currentTimeMillis());
    sb.append("-");
    return sb.toString();
  }
 
  // TODO kirk 2012-07-18 -- This needs to be restricted to times where there's a Redis
  // server available for testing.
  @Test
  public void testBasicFunctionality() {
    RedisLastKnownValueStoreProvider provider = new RedisLastKnownValueStoreProvider();
    provider.setServer(REDIS_SERVER);
    provider.setGlobalPrefix(generatePrefix("testBasicFunctionality"));
    provider.setWriteThrough(true);
   
    MutableFudgeMsg msg = OpenGammaFudgeContext.getInstance().newMessage();
   
    LastKnownValueStore store = provider.newInstance(ExternalId.of("Test", "testBasicFunctionality"), "no-norm");
    FudgeMsg currFields = store.getFields();
    assertTrue(currFields.isEmpty());
   
    msg.add("bid", 1.0d);
    msg.add("ask", 2.0d);
   
    store.updateFields(msg);
   
    currFields = store.getFields();
    assertEquals(1.0d, currFields.getDouble("bid"), 0.0005d);
    assertEquals(2.0d, currFields.getDouble("ask"), 0.0005d);
   
    // Reset the store.
    store = provider.newInstance(ExternalId.of("Test", "testBasicFunctionality"), "no-norm");
    currFields = store.getFields();
    assertEquals(1.0d, currFields.getDouble("bid"), 0.0005d);
    assertEquals(2.0d, currFields.getDouble("ask"), 0.0005d);
   
    // Write through another value and confirm it works.
    msg = OpenGammaFudgeContext.getInstance().newMessage();
    msg.add("bid", 5.0d);
    store.updateFields(msg);
   
    store = provider.newInstance(ExternalId.of("Test", "testBasicFunctionality"), "no-norm");
    currFields = store.getFields();
    assertEquals(5.0d, currFields.getDouble("bid"), 0.0005d);
    assertEquals(2.0d, currFields.getDouble("ask"), 0.0005d);
   
    // Reset the store. This time don't write through.
    provider.setWriteThrough(false);
    store = provider.newInstance(ExternalId.of("Test", "testBasicFunctionality"), "no-norm");
    currFields = store.getFields();
    assertEquals(5.0d, currFields.getDouble("bid"), 0.0005d);
    assertEquals(2.0d, currFields.getDouble("ask"), 0.0005d);
   
    msg = OpenGammaFudgeContext.getInstance().newMessage();
    msg.add("bid", 3.0d);
    msg.add("ask", 4.0d);
    store.updateFields(msg);
    currFields = store.getFields();
    assertEquals(3.0d, currFields.getDouble("bid"), 0.0005d);
    assertEquals(4.0d, currFields.getDouble("ask"), 0.0005d);

    // Reset the store.
    store = provider.newInstance(ExternalId.of("Test", "testBasicFunctionality"), "no-norm");
    currFields = store.getFields();
    assertEquals(5.0d, currFields.getDouble("bid"), 0.0005d);
    assertEquals(2.0d, currFields.getDouble("ask"), 0.0005d);
  }

}
TOP

Related Classes of com.opengamma.livedata.server.RedisLastKnownValueStoreProviderTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.