Package com.opengamma.web.analytics

Source Code of com.opengamma.web.analytics.LoggingViewportListenerTest

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

import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anySet;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import java.util.Arrays;
import java.util.List;
import java.util.Set;

import org.testng.annotations.Test;

import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.opengamma.engine.ComputationTargetSpecification;
import com.opengamma.engine.target.ComputationTargetType;
import com.opengamma.engine.value.ValueProperties;
import com.opengamma.engine.value.ValuePropertyNames;
import com.opengamma.engine.value.ValueSpecification;
import com.opengamma.engine.view.ExecutionLogMode;
import com.opengamma.engine.view.client.ViewClient;
import com.opengamma.id.UniqueId;
import com.opengamma.util.test.TestGroup;
import com.opengamma.util.tuple.Pair;
import com.opengamma.web.analytics.formatting.TypeFormatter;

/**
* Test.
*/
@Test(groups = TestGroup.UNIT)
public class LoggingViewportListenerTest {

  private final GridCell _cell1 = new GridCell(0, 1, TypeFormatter.Format.CELL);
  private final GridCell _cell2 = new GridCell(0, 2, TypeFormatter.Format.CELL);
  private final GridCell _cell3 = new GridCell(0, 3, TypeFormatter.Format.CELL);
  private final List<GridCell> _cells12 = Lists.newArrayList(_cell1, _cell2);
  private final List<GridCell> _cells23 = Lists.newArrayList(_cell2, _cell3);
  private final GridStructure _gridStructure = gridStructure(_cell1, _cell2, _cell3);

  /**
   * creates a viewport with logging enabled and then deletes it
   */
  @Test
  public void createDeleteWithLogging() {
    final ViewClient viewClient = mock(ViewClient.class);
    final LoggingViewportListener listener = new LoggingViewportListener(viewClient);
    final ViewportDefinition viewportDef = viewportDef(true, _cells12);
    listener.viewportCreated(viewportDef, _gridStructure);
    verify(viewClient).setMinimumLogMode(ExecutionLogMode.FULL, resultSpecs(_cells12));
    listener.viewportDeleted(viewportDef, _gridStructure);
    verify(viewClient).setMinimumLogMode(ExecutionLogMode.INDICATORS, resultSpecs(_cells12));
  }

  /**
   * creates a deletes a viewport with no logging enabled
   */
  @Test
  @SuppressWarnings("unchecked")
  public void createDeleteNoLogging() {
    final ViewClient viewClient = mock(ViewClient.class);
    final LoggingViewportListener listener = new LoggingViewportListener(viewClient);
    final ViewportDefinition viewportDef = viewportDef(false, _cells12);
    listener.viewportCreated(viewportDef, _gridStructure);
    listener.viewportDeleted(viewportDef, _gridStructure);
    verify(viewClient, never()).setMinimumLogMode(any(ExecutionLogMode.class), anySet());
  }

  @Test
  public void createUpdateDeleteWithLogging() {
    final ViewClient viewClient = mock(ViewClient.class);
    final LoggingViewportListener listener = new LoggingViewportListener(viewClient);
    final ViewportDefinition viewportDef1 = viewportDef(true, _cells12);
    listener.viewportCreated(viewportDef1, _gridStructure);
    verify(viewClient).setMinimumLogMode(ExecutionLogMode.FULL, resultSpecs(_cells12));

    final ViewportDefinition viewportDef2 = viewportDef(true, _cells23);
    listener.viewportUpdated(viewportDef1, viewportDef2, _gridStructure);
    verify(viewClient).setMinimumLogMode(ExecutionLogMode.INDICATORS, resultSpecs(_cell1));
    verify(viewClient).setMinimumLogMode(ExecutionLogMode.FULL, resultSpecs(_cell3));

    listener.viewportDeleted(viewportDef2, _gridStructure);
    verify(viewClient).setMinimumLogMode(ExecutionLogMode.INDICATORS, resultSpecs(_cells23));
  }

  @Test
  @SuppressWarnings("unchecked")
  public void createUpdateDeleteNoLogging() {
    final ViewClient viewClient = mock(ViewClient.class);
    final LoggingViewportListener listener = new LoggingViewportListener(viewClient);
    final ViewportDefinition viewportDef1 = viewportDef(false, _cells12);
    listener.viewportCreated(viewportDef1, _gridStructure);
    final ViewportDefinition viewportDef2 = viewportDef(false, _cells23);
    listener.viewportUpdated(viewportDef1, viewportDef2, _gridStructure);
    listener.viewportDeleted(viewportDef2, _gridStructure);
    verify(viewClient, never()).setMinimumLogMode(any(ExecutionLogMode.class), anySet());
  }

  @Test
  public void twoViewportsWithLoggingAndOverlappingCells() {
    final ViewClient viewClient = mock(ViewClient.class);
    final LoggingViewportListener listener = new LoggingViewportListener(viewClient);
    final ViewportDefinition viewportDef1 = viewportDef(true, _cells12);
    final ViewportDefinition viewportDef2 = viewportDef(true, _cells23);
    listener.viewportCreated(viewportDef1, _gridStructure);
    verify(viewClient).setMinimumLogMode(ExecutionLogMode.FULL, resultSpecs(_cell1, _cell2));
    listener.viewportCreated(viewportDef2, _gridStructure);
    verify(viewClient).setMinimumLogMode(ExecutionLogMode.FULL, resultSpecs(_cell3));
    listener.viewportDeleted(viewportDef1, _gridStructure);
    verify(viewClient).setMinimumLogMode(ExecutionLogMode.INDICATORS, resultSpecs(_cell1));
    listener.viewportDeleted(viewportDef2, _gridStructure);
    verify(viewClient).setMinimumLogMode(ExecutionLogMode.INDICATORS, resultSpecs(_cell2, _cell3));
  }

  //-------------------------------------------------------------------------
  private static ViewportDefinition viewportDef(final boolean enableLogging, final List<GridCell> cells) {
    return new ArbitraryViewportDefinition(0, cells, enableLogging);
  }

  private static GridStructure gridStructure(final GridCell... cells) {
    return gridStructure(Arrays.asList(cells));
  }

  private static GridStructure gridStructure(final List<GridCell> cells) {
    final GridStructure mock = mock(GridStructure.class);
    for (final GridCell cell : cells) {
      when(mock.getTargetForCell(cell.getRow(), cell.getColumn())).thenReturn(target(cell));
    }
    return mock;
  }

  private static Pair<String, ValueSpecification> target(final GridCell cell) {
    final int row = cell.getRow();
    final int col = cell.getColumn();
    final ComputationTargetSpecification target = new ComputationTargetSpecification(ComputationTargetType.POSITION,
                                                                               UniqueId.of("Cell", row + "," + col));
    final ValueProperties properties = ValueProperties.with(ValuePropertyNames.FUNCTION, "fnName").get();
    return Pair.of("Default", new ValueSpecification("valueName(" + row + "," + col + ")", target, properties));
  }

  private Set<Pair<String, ValueSpecification>> resultSpecs(final GridCell... cells) {
    return resultSpecs(Arrays.asList(cells));
  }

  private Set<Pair<String, ValueSpecification>> resultSpecs(final List<GridCell> cells) {
    final Set<Pair<String, ValueSpecification>> specs = Sets.newHashSet();
    for (final GridCell cell : cells) {
      specs.add(target(cell));
    }
    return specs;
  }
}
TOP

Related Classes of com.opengamma.web.analytics.LoggingViewportListenerTest

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.