Package com.opengamma.engine.test

Source Code of com.opengamma.engine.test.CalculationNodeUtils

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

import java.util.Collections;
import java.util.Set;

import org.threeten.bp.Instant;

import com.google.common.collect.Sets;
import com.opengamma.engine.ComputationTarget;
import com.opengamma.engine.cache.CacheSelectHint;
import com.opengamma.engine.calcnode.CalculationJob;
import com.opengamma.engine.calcnode.CalculationJobItem;
import com.opengamma.engine.calcnode.CalculationJobSpecification;
import com.opengamma.engine.function.InMemoryFunctionRepository;
import com.opengamma.engine.target.ComputationTargetType;
import com.opengamma.engine.value.ValuePropertyNames;
import com.opengamma.engine.value.ValueRequirement;
import com.opengamma.engine.value.ValueSpecification;
import com.opengamma.engine.view.ExecutionLogMode;
import com.opengamma.id.UniqueId;
import com.opengamma.id.VersionCorrection;
import com.opengamma.util.money.Currency;

/**
*
*/
public class CalculationNodeUtils {

  /**
   * Default calculation configuration name
   */
  public static final String CALC_CONF_NAME = "Default";

  public static TestCalculationNode getTestCalcNode(final MockFunction mockFunction) {
    final TestCalculationNode calcNode = new TestCalculationNode();
    configureTestCalcNode(calcNode, mockFunction);
    return calcNode;
  }

  public static void configureTestCalcNode(final TestCalculationNode calcNode, final MockFunction mockFunction) {
    final InMemoryFunctionRepository functionRepo = (InMemoryFunctionRepository) calcNode.getFunctionCompilationService().getFunctionRepository();
    functionRepo.addFunction(mockFunction);
    calcNode.getFunctionCompilationService().initialize();
  }

  public static MockFunction getMockFunction() {
    final ComputationTarget target = new ComputationTarget(ComputationTargetType.CURRENCY, Currency.USD);
    return getMockFunction(target, "Nothing we care about");
  }

  public static MockFunction getMockFunction(final ComputationTarget target, final Object output) {
    return MockFunction.getMockFunction(MockFunction.UNIQUE_ID, target, output, new ValueRequirement("INPUT", target.toSpecification()));
  }

  public static Set<ValueSpecification> getMockFunctionInputs(final MockFunction function) {
    final Set<ValueRequirement> requirements = function.getRequirements();
    final Set<ValueSpecification> inputs = Sets.newHashSetWithExpectedSize(requirements.size());
    for (final ValueRequirement requirement : requirements) {
      inputs.add(new ValueSpecification(requirement.getValueName(), requirement.getTargetReference().getSpecification(), requirement.getConstraints().copy().with(ValuePropertyNames.FUNCTION, "mock")
          .get()));
    }
    return inputs;
  }

  public static CalculationJob getCalculationJob(final MockFunction function) {
    return getCalculationJob(function, ExecutionLogMode.INDICATORS);
  }

  public static CalculationJob getCalculationJob(final MockFunction function, final ExecutionLogMode logMode) {
    final Instant valuationTime = Instant.now();
    final CalculationJobSpecification jobSpec = new CalculationJobSpecification(UniqueId.of("Test", "ViewProcess"), CALC_CONF_NAME, valuationTime, 1L);
    final CalculationJobItem calculationJobItem = new CalculationJobItem(function.getUniqueId(), function.getDefaultParameters(), function.getTarget().toSpecification(),
        getMockFunctionInputs(function), function.getResultSpecs(), logMode);
    final CalculationJob calcJob = new CalculationJob(jobSpec, 0L, VersionCorrection.LATEST, null, Collections.singletonList(calculationJobItem), CacheSelectHint.allShared());
    return calcJob;
  }

}
TOP

Related Classes of com.opengamma.engine.test.CalculationNodeUtils

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.