Commit 667f2308 authored by Björn Richerzhagen's avatar Björn Richerzhagen
Browse files

Removed SimLogger-dependency

parent 7d3a9810
......@@ -27,11 +27,10 @@ import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
import org.apache.log4j.Logger;
import de.tud.kom.p2psim.impl.network.IPv4Message;
import de.tud.kom.p2psim.impl.network.realNetworking.RealNetworkingNetLayerManager;
import de.tud.kom.p2psim.impl.util.logging.SimLogger;
import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.Monitor.Level;
/**
* The listener interface for receiving udp events.
......@@ -45,9 +44,6 @@ import de.tud.kom.p2psim.impl.util.logging.SimLogger;
* @see UdpEvent
*/
public class RealNetworkingUdpListener implements Runnable {
/** The logger. */
private static Logger log = SimLogger.getLogger(RealNetworkingUdpListener.class);
/** The socket to listen on. */
private DatagramSocket socket;
......@@ -80,7 +76,8 @@ public class RealNetworkingUdpListener implements Runnable {
public void run() {
if( running ) {
log.debug("UdpListener thread running.");
Monitor.log(RealNetworkingUdpListener.class, Level.DEBUG,
"UdpListener thread running.");
this.alive = true;
}
......@@ -128,9 +125,11 @@ public class RealNetworkingUdpListener implements Runnable {
} catch (SocketException e) {
/* Nothing. Socket was closed, thread will end now. */
} catch (IOException e) {
log.warn("Socket IOException: " + e.getMessage());
Monitor.log(RealNetworkingUdpListener.class, Level.WARN,
"Socket IOException: " + e.getMessage());
} catch (AssertionError e) {
log.warn("Assertion: " + e.getMessage());
Monitor.log(RealNetworkingUdpListener.class, Level.WARN,
"Assertion: " + e.getMessage());
}
}
......@@ -141,7 +140,8 @@ public class RealNetworkingUdpListener implements Runnable {
* Stop.
*/
public void stop() {
log.debug("UdpListener thread stopping.");
Monitor.log(RealNetworkingUdpListener.class, Level.DEBUG,
"UdpListener thread stopping.");
running = false;
}
......
......@@ -20,8 +20,6 @@
package de.tud.kom.p2psim.impl.network.routed.routing;
import org.apache.log4j.Logger;
import de.tud.kom.p2psim.api.analyzer.MessageAnalyzer.Reason;
import de.tud.kom.p2psim.api.analyzer.NetlayerAnalyzer;
import de.tud.kom.p2psim.api.common.SimHost;
......@@ -33,7 +31,6 @@ import de.tud.kom.p2psim.api.network.routing.RoutingAlgorithm;
import de.tud.kom.p2psim.api.network.routing.RoutingListener;
import de.tud.kom.p2psim.api.network.routing.RoutingMessage;
import de.tud.kom.p2psim.impl.network.routed.RoutedNetMessage;
import de.tud.kom.p2psim.impl.util.logging.SimLogger;
import de.tudarmstadt.maki.simonstrator.api.Host;
import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.Monitor.Level;
......@@ -52,9 +49,6 @@ import de.tudarmstadt.maki.simonstrator.api.component.network.NetworkComponent.N
*/
public abstract class AbstractRoutingAlgorithm implements RoutingAlgorithm {
protected static Logger log = SimLogger
.getLogger(AbstractRoutingAlgorithm.class);
private SimHost host;
private RoutingListener netlayer;
......
......@@ -23,14 +23,13 @@ package de.tud.kom.p2psim.impl.network.routed.routing.aodv.operation;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import de.tud.kom.p2psim.impl.network.IPv4NetID;
import de.tud.kom.p2psim.impl.network.routed.routing.aodv.AodvConstants;
import de.tud.kom.p2psim.impl.network.routed.routing.aodv.message.RouteRequestMessage;
import de.tud.kom.p2psim.impl.network.routed.routing.aodv.state.AodvRouteTableEntry;
import de.tud.kom.p2psim.impl.network.routed.routing.aodv.state.AodvState;
import de.tud.kom.p2psim.impl.util.logging.SimLogger;
import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.Monitor.Level;
import de.tudarmstadt.maki.simonstrator.api.Time;
import de.tudarmstadt.maki.simonstrator.api.component.network.NetID;
import de.tudarmstadt.maki.simonstrator.api.operation.AbstractOperation;
......@@ -46,8 +45,7 @@ import de.tudarmstadt.maki.simonstrator.api.operation.OperationCallback;
* @author Christoph Neumann
*/
public class RequestRouteOperation extends AbstractOperation<AodvState, NetID> {
private static Logger log = SimLogger.getLogger(RequestRouteOperation.class);
List<OperationCallback<NetID>> callbacks = new ArrayList<OperationCallback<NetID>>();
AodvState state;
......@@ -161,7 +159,8 @@ public class RequestRouteOperation extends AbstractOperation<AodvState, NetID> {
if (rte != null && rte.isValid()) {
// if we know about a valid route, this method should not
// have been called in the first place
log.warn("Tried to broadcast a RREQ even though I know about a valid route.");
Monitor.log(RequestRouteOperation.class, Level.WARN,
"Tried to broadcast a RREQ even though I know about a valid route.");
return;
}
......
......@@ -22,8 +22,6 @@
package de.tud.kom.p2psim.impl.network.simple;
import org.apache.log4j.Logger;
import de.tud.kom.p2psim.api.analyzer.MessageAnalyzer.Reason;
import de.tud.kom.p2psim.api.common.Position;
import de.tud.kom.p2psim.api.common.SimHost;
......@@ -33,14 +31,12 @@ import de.tud.kom.p2psim.api.network.NetProtocol;
import de.tud.kom.p2psim.api.transport.TransProtocol;
import de.tud.kom.p2psim.impl.network.AbstractNetLayer;
import de.tud.kom.p2psim.impl.transport.AbstractTransMessage;
import de.tud.kom.p2psim.impl.util.logging.SimLogger;
import de.tudarmstadt.maki.simonstrator.api.Message;
import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.component.network.NetID;
public class SimpleNetLayer extends AbstractNetLayer {
protected static Logger log = SimLogger.getLogger(SimpleNetLayer.class);
private double currentDownBandwidth;
private double currentUpBandwidth;
......@@ -83,7 +79,8 @@ public class SimpleNetLayer extends AbstractNetLayer {
}
} else {
int assignedMsgId = subNet.determineTransMsgNumber(msg);
log.debug("During send: Assigning MsgId " + assignedMsgId
Monitor.log(SimpleNetLayer.class, Monitor.Level.DEBUG,
"During send: Assigning MsgId " + assignedMsgId
+ " to dropped message");
((AbstractTransMessage) msg).setCommId(assignedMsgId);
NetMessage netMsg = new SimpleNetMessage(msg, receiver,
......
......@@ -25,16 +25,15 @@ package de.tud.kom.p2psim.impl.network.simple;
import java.util.HashMap;
import java.util.Map;
import org.apache.log4j.Logger;
import de.tud.kom.p2psim.api.network.NetLayer;
import de.tud.kom.p2psim.api.network.NetMessage;
import de.tud.kom.p2psim.impl.network.AbstractSubnet;
import de.tud.kom.p2psim.impl.network.modular.st.LatencyStrategy;
import de.tud.kom.p2psim.impl.transport.AbstractTransMessage;
import de.tud.kom.p2psim.impl.util.logging.SimLogger;
import de.tudarmstadt.maki.simonstrator.api.Event;
import de.tudarmstadt.maki.simonstrator.api.EventHandler;
import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.Monitor.Level;
import de.tudarmstadt.maki.simonstrator.api.Time;
import de.tudarmstadt.maki.simonstrator.api.component.network.NetID;
......@@ -43,9 +42,7 @@ import de.tudarmstadt.maki.simonstrator.api.component.network.NetID;
*
* @author Sebastian Kaune
*/
public class SimpleSubnet extends AbstractSubnet implements EventHandler {
private static Logger log = SimLogger.getLogger(SimpleSubnet.class);
public class SimpleSubnet extends AbstractSubnet implements EventHandler {
Map<NetID, NetLayer> netLayers;
......@@ -66,7 +63,6 @@ public class SimpleSubnet extends AbstractSubnet implements EventHandler {
@Override
public void registerNetLayer(NetLayer net) {
netLayers.put(net.getNetID(), net);
log.debug("Register " + net.getNetID() + " " + net);
}
@Override
......@@ -82,7 +78,8 @@ public class SimpleSubnet extends AbstractSubnet implements EventHandler {
SimpleNetLayer receiver = (SimpleNetLayer) netLayers.get(msg.getReceiver());
long latency = netLatencyModel.getMessagePropagationDelay(msg, sender, receiver, null);
log.debug("Send from " + sender + " to " + receiver + " with delay " + latency);
Monitor.log(SimpleSubnet.class, Level.INFO, "Send from " + sender
+ " to " + receiver + " with delay " + latency);
scheduleReceiveEvent(msg, receiver, latency);
}
......@@ -92,11 +89,8 @@ public class SimpleSubnet extends AbstractSubnet implements EventHandler {
long lastArrivalTime = getLastArrivalTime(link);
long newArrivalTime = Time.getCurrentTime() + latency;
log.debug("new arrival time = " + newArrivalTime + " lastArrivalTime="
+ lastArrivalTime);
if (lastArrivalTime > newArrivalTime) { // assure ordered delivery
newArrivalTime = lastArrivalTime + inOrderOffset;
log.debug("arrival time adjusted to " + newArrivalTime);
}
links.put(link, newArrivalTime);
......@@ -164,7 +158,6 @@ public class SimpleSubnet extends AbstractSubnet implements EventHandler {
long lastArrivalTime = getLastArrivalTime(linkID);
if (lastArrivalTime == Time.getCurrentTime()) {
links.remove(linkID);
log.debug("Remove obsolete link " + linkID);
assert !links.containsKey(linkID);
}
((SimpleNetLayer) receiver).receive(msg);
......
......@@ -28,13 +28,12 @@ import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
import org.apache.log4j.Logger;
import de.tud.kom.p2psim.api.scenario.ConfigurationException;
import de.tud.kom.p2psim.api.scenario.Scenario;
import de.tud.kom.p2psim.impl.util.logging.SimLogger;
import de.tudarmstadt.maki.simonstrator.api.Event;
import de.tudarmstadt.maki.simonstrator.api.EventHandler;
import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.Monitor.Level;
import de.tudarmstadt.maki.simonstrator.api.Time;
/**
......@@ -54,8 +53,6 @@ public class CSVScenarioFactory extends AbstractScenarioFactory {
private String tokenDelimiter = " ";
static final Logger log = SimLogger.getLogger(CSVScenarioFactory.class);
// Element behaviorElem;
// private int experimentSize;
......@@ -96,7 +93,10 @@ public class CSVScenarioFactory extends AbstractScenarioFactory {
Event.scheduleWithDelay(time, new EventHandler() {
public void eventOccurred(Object data, int type) {
log.info("Scenario Echo: " + data.toString() + " at "
Monitor.log(
CSVScenarioFactory.class,
Level.INFO,
"Scenario Echo: " + data.toString() + " at "
+ Time.getCurrentTime());
}
......@@ -157,7 +157,8 @@ public class CSVScenarioFactory extends AbstractScenarioFactory {
else
actionCounter += parseActions(line);
}
log.info("Created " + actionCounter + " actions");
Monitor.log(CSVScenarioFactory.class, Level.INFO, "Created "
+ actionCounter + " actions");
} catch (IOException e) {
throw new ConfigurationException("Failed to parse " + actionsFile
+ " reason: ", e);
......
......@@ -25,14 +25,12 @@ package de.tud.kom.p2psim.impl.scenario;
import java.util.Arrays;
import java.util.Iterator;
import org.apache.log4j.Logger;
import org.dom4j.Element;
import de.tud.kom.p2psim.api.scenario.Builder;
import de.tud.kom.p2psim.api.scenario.ConfigurationException;
import de.tud.kom.p2psim.api.scenario.Configurator;
import de.tud.kom.p2psim.api.scenario.Scenario;
import de.tud.kom.p2psim.impl.util.logging.SimLogger;
/**
* Factory to create a default scenario from a DOM subtree. Expected format:
......@@ -52,9 +50,6 @@ public class DOMScenarioFactory extends AbstractScenarioFactory implements
*/
private String paramsDelimiter = ";";
private static final Logger log = SimLogger
.getLogger(DOMScenarioFactory.class);
private Scenario scenario;
// Element behaviorElem;
......@@ -92,7 +87,6 @@ public class DOMScenarioFactory extends AbstractScenarioFactory implements
scenario.createActions(hostId, time, method, params);
actionCounter++;
}
log.debug("Created " + actionCounter + " actions");
} catch (Exception e) {
throw new ConfigurationException("Failed to parse DOM element "
+ elem.asXML() + " reason: ", e);
......
......@@ -41,7 +41,6 @@ import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.apache.log4j.Logger;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
......@@ -58,8 +57,9 @@ import de.tud.kom.p2psim.api.scenario.Builder;
import de.tud.kom.p2psim.api.scenario.Composable;
import de.tud.kom.p2psim.api.scenario.ConfigurationException;
import de.tud.kom.p2psim.api.scenario.Configurator;
import de.tud.kom.p2psim.impl.util.logging.SimLogger;
import de.tud.kom.p2psim.impl.util.toolkits.Dom4jToolkit;
import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.Monitor.Level;
import de.tudarmstadt.maki.simonstrator.api.Time;
import de.tudarmstadt.maki.simonstrator.api.component.Component;
import de.tudarmstadt.maki.simonstrator.api.util.XMLConfigurableConstructor;
......@@ -134,8 +134,6 @@ public class DefaultConfigurator implements Configurator {
*/
protected static final String CLASS_SEPARATOR = ";";
private static Logger log = SimLogger.getLogger(DefaultConfigurator.class);
private Map<String, Object> configurables = new LinkedHashMap<String, Object>();
private LinkedList<Object> componentList = new LinkedList<Object>();
......@@ -203,7 +201,8 @@ public class DefaultConfigurator implements Configurator {
* @throws ConfigurationException
*/
public Collection<Object> configureAll() throws ConfigurationException {
log.info("Configure system from file " + configFile);
Monitor.log(DefaultConfigurator.class, Level.INFO,
"Configure system from file " + configFile);
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
try {
......@@ -259,8 +258,8 @@ public class DefaultConfigurator implements Configurator {
* root of the subtree
*/
private void configureFirstLevel(Element parent) {
if (log.isDebugEnabled())
log.debug("Configure simulator using " + parent.asXML());
Monitor.log(DefaultConfigurator.class, Level.DEBUG,
"Configure simulator using " + parent.asXML());
for (Object obj : parent.elements()) {
Element elem = (Element) obj;
......@@ -298,7 +297,8 @@ public class DefaultConfigurator implements Configurator {
*/
public Object configureComponent(Element elem) {
log.debug("Configure component " + elem.getName());
Monitor.log(DefaultConfigurator.class, Level.DEBUG,
"Configure component " + elem.getName());
Object component = configurables.get(elem.getName());
// register new component (if not done yet)
Set<String> consAttrs = new HashSet<String>(); // attributes that were
......@@ -310,13 +310,15 @@ public class DefaultConfigurator implements Configurator {
// configure it
if (component != null) {
log.info("Configure component "
Monitor.log(DefaultConfigurator.class, Level.INFO,
"Configure component "
+ component.getClass().getSimpleName() + " with element "
+ elem.getName());
configureAttributes(component, elem, consAttrs);
// configure subcomponents
if (component instanceof Builder) {
log.info("Configure builder " + component);
Monitor.log(DefaultConfigurator.class, Level.INFO,
"Configure builder " + component);
Builder builder = (Builder) component;
builder.parse(elem, this);
} else {
......@@ -329,7 +331,8 @@ public class DefaultConfigurator implements Configurator {
}
} else {
// component cannot be created and has not been registered
log.warn("Skip element " + elem.getName());
Monitor.log(DefaultConfigurator.class, Level.WARN, "Skip element "
+ elem.getName());
}
return component;
}
......@@ -340,7 +343,8 @@ public class DefaultConfigurator implements Configurator {
Object component;
String className = getAttributeValue(elem.attribute(CLASS_TAG));
log.debug("Create component " + className + " with element "
Monitor.log(DefaultConfigurator.class, Level.DEBUG, "Create component "
+ className + " with element "
+ elem.getName());
component = createInstance(className,
getAttributeValue(elem.attribute(STATIC_CREATION_METHOD_TAG)),
......@@ -349,7 +353,8 @@ public class DefaultConfigurator implements Configurator {
register(elem.getName(), (Component) component);
// composable can use other components
if (component instanceof Composable) {
log.debug("Compose composable " + component);
Monitor.log(DefaultConfigurator.class, Level.DEBUG,
"Compose composable " + component);
((Composable) component).compose(this);
}
return component;
......@@ -405,19 +410,22 @@ public class DefaultConfigurator implements Configurator {
for (int i = 0; i < methods.length; i++) {
if (methodName.equals(methods[i].getName())) {
match = methods[i];
log.debug("Match " + match);
Monitor.log(DefaultConfigurator.class, Level.DEBUG, "Match "
+ match);
break;
}
}
if (match == null) {
log.warn("Cannot set " + subcomponent + " as there is no method "
Monitor.log(DefaultConfigurator.class, Level.WARN, "Cannot set "
+ subcomponent + " as there is no method "
+ methodName + " declared in " + component);
throw new ConfigurationException("Cannot set " + subcomponent
+ " as there is no method " + methodName + " declared in "
+ component);
} else {
Class[] types = match.getParameterTypes();
log.debug("Param types" + Arrays.asList(types));
Monitor.log(DefaultConfigurator.class, Level.DEBUG, "Param types"
+ Arrays.asList(types));
if (types.length == 1) {
try {
match.invoke(component, types[0].cast(subcomponent));
......@@ -465,7 +473,9 @@ public class DefaultConfigurator implements Configurator {
if (method == null) {
method = methods[i];
} else {
log.error("Found two possible methods "
Monitor.log(DefaultConfigurator.class,
Level.ERROR,
"Found two possible methods "
+ method + " and " + methods[i]);
throw new IllegalArgumentException(
"Cannot set property "
......@@ -594,7 +604,8 @@ public class DefaultConfigurator implements Configurator {
int posDollar = value.indexOf(CONFIG_VARIABLE_PREFIX_TAG);
String varName = value.substring(posDollar + 1, value.length());
value = variables.get(varName);
log.debug("Fetched variable " + varName + " as " + value);
Monitor.log(DefaultConfigurator.class, Level.DEBUG,
"Fetched variable " + varName + " as " + value);
} else {
// The following allows for inner-value substitution. For example
// when using
......@@ -726,7 +737,6 @@ public class DefaultConfigurator implements Configurator {
return component;
} catch (Exception e) {
log.error(e);
throw new ConfigurationException("Failed to create configurable "
+ className, e);
}
......@@ -739,8 +749,10 @@ public class DefaultConfigurator implements Configurator {
* @param variables
*/
public void setVariables(Map<String, String> variables) {
if (variables.size() != 0)
log.warn("Set variables " + variables);
if (variables.size() != 0) {
Monitor.log(DefaultConfigurator.class, Level.WARN, "Set variables "
+ variables);
}
this.variables.putAll(variables);
}
......@@ -862,7 +874,8 @@ public class DefaultConfigurator implements Configurator {
Iterator iter = ifClause.elementIterator();
if (!iter.hasNext())
log.warn("No component to configure in the ifEqualStr-clause (arg0="
Monitor.log(DefaultConfigurator.class, Level.WARN,
"No component to configure in the ifEqualStr-clause (arg0="
+ arg0 + ", arg1=" + arg1 + ").");
else {
while (iter.hasNext()) {
......@@ -901,7 +914,8 @@ public class DefaultConfigurator implements Configurator {
Iterator iter = ifClause.elementIterator();
if (!iter.hasNext())
log.warn("No component to configure in the ifNotEqualStr-clause (arg0="
Monitor.log(DefaultConfigurator.class, Level.WARN,
"No component to configure in the ifNotEqualStr-clause (arg0="
+ arg0 + ", arg1=" + arg1 + ").");
else {
while (iter.hasNext()) {
......
......@@ -30,7 +30,6 @@ import java.util.List;
import java.util.Map;
import java.util.Vector;
import org.apache.log4j.Logger;
import org.dom4j.Element;
import de.tud.kom.p2psim.api.common.SimHost;
......@@ -42,8 +41,9 @@ import de.tud.kom.p2psim.api.topology.TopologyComponent;
import de.tud.kom.p2psim.impl.common.DefaultHost;
import de.tud.kom.p2psim.impl.common.DefaultHostProperties;
import de.tud.kom.p2psim.impl.common.FakeHost;
import de.tud.kom.p2psim.impl.util.logging.SimLogger;
import de.tud.kom.p2psim.impl.util.oracle.GlobalOracle;
import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.Monitor.Level;
import de.tudarmstadt.maki.simonstrator.api.component.HostComponent;
import de.tudarmstadt.maki.simonstrator.api.component.HostComponentFactory;
......@@ -87,9 +87,6 @@ public class DefaultHostBuilder implements HostBuilder, Builder {
*/
public static final String GROUP_ID_TAG = "groupID";
private static final Logger log = SimLogger
.getLogger(DefaultHostBuilder.class);
/**
* Groups of hosts indexed by group ids.
*/
......@@ -200,7 +197,11 @@ public class DefaultHostBuilder implements HostBuilder, Builder {
HostComponentFactory layer = (HostComponentFactory) defaultConfigurator
.configureComponent(layerElem);
if (layer == null) {
log.warn("Host group " + groupElem.getName()
Monitor.log(
DefaultHostBuilder.class,
Level.WARN,
"Host group "
+ groupElem.getName()
+ ": An element of name '"
+ layerElem.getName()
+ "' is not configured. Ignoring.");
......@@ -238,11 +239,13 @@ public class DefaultHostBuilder implements HostBuilder, Builder {
}
group.add(host);
}
log.debug("Created a group with " + group.size() + " hosts");
Monitor.log(DefaultHostBuilder.class, Level.DEBUG,
"Created a group with " + group.size() + " hosts");
hosts.addAll(group);
groups.put(groupID, group);
}
log.info("CREATED " + hosts.size() + " hosts");
Monitor.log(DefaultHostBuilder.class, Level.INFO,
"CREATED " + hosts.size() + " hosts");
// Populate Global Oracle
GlobalOracle.populate(hosts);
......@@ -269,7 +272,10 @@ public class DefaultHostBuilder implements HostBuilder, Builder {
}
if (hosts.size() != experimentSize) {
log.warn("Only "
Monitor.log(
DefaultHostBuilder.class,
Level.WARN,
"Only "
+ hosts.size()
+ " hosts were specified, though the experiment size was set to "
+ experimentSize);
......
......@@ -29,13 +29,12 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.api.scenario.Scenario;
import de.tud.kom.p2psim.api.scenario.ScenarioAction;
import de.tud.kom.p2psim.impl.common.FakeHost;
import de.tud.kom.p2psim.impl.util.logging.SimLogger;
import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.Monitor.Level;
import de.tudarmstadt.maki.simonstrator.api.component.ComponentNotAvailableException;
import de.tudarmstadt.maki.simonstrator.api.component.HostComponent;
import de.tudarmstadt.maki.simonstrator.api.operation.OperationCallback;
......@@ -51,8 +50,6 @@ import de.tudarmstadt.maki.simonstrator.api.operation.Operations;
*
*/
class ExtendedScenario implements Scenario {
private final static Logger log = SimLogger
.getLogger(ExtendedScenario.class);
/**
* contains the created hosts, indexed by their IDs, which start at 1
......@@ -75,7 +72,6 @@ class ExtendedScenario implements Scenario {
actions = new LinkedList<ExtendedScenarioAction>();
paramParsers = new LinkedHashMap<Class, Parser>();
this.componentClass = defaultCompClass;
log.info("ComponentClass is " + defaultCompClass);
if (defaultCompClass == null)
throw new IllegalArgumentException("Component class was not set!");
registeredComponentClasses = new LinkedList<Class>();
......@@ -99,7 +95,8 @@ class ExtendedScenario implements Scenario {
for (List<SimHost> group : groups.values()) {
hosts.addAll(group);
}
log.info("Total number: " + hosts.size() + " hosts in " + groups.size()
Monitor.log(ExtendedScenario.class, Level.INFO, "Total number: "
+ hosts.size() + " hosts in " + groups.size()
+ " groups");
}
......@@ -116,7 +113,8 @@ class ExtendedScenario implements Scenario {
target = host.getComponent(componentClass);
} catch (ComponentNotAvailableException e) {
if (ignoreMissingComponents) {
log.warn("[Ignoring] Cannot find target implementing "
Monitor.log(ExtendedScenario.class, Level.WARN,
"[Ignoring] Cannot find target implementing "
+ componentClass + " in host " + host);
return;
} else {
......@@ -178,7 +176,8 @@ class ExtendedScenario implements Scenario {
// calculate time
List<SimHost> hosts = groups.get(hostIds);
if (hosts == null) {
log.warn("Unknown host/group id: "
Monitor.log(ExtendedScenario.class, Level.WARN,
"Unknown host/group id: "
+ hostIds);
return 0;
}
......@@ -190,11 +189,13 @@ class ExtendedScenario implements Scenario {
String[] split = methodName.split(":");
String simpleName = split[0];
methodName = split[1];
log.info("Search for " + simpleName);
Monitor.log(ExtendedScenario.class, Level.INFO, "Search for "
+ simpleName);
// search for the appropriate class
for (Class type : registeredComponentClasses) {
Class[] interfaces = type.getInterfaces();
log.info("for type " + type);
Monitor.log(ExtendedScenario.class, Level.INFO, "for type "
+ type);
// try itself
if (type.getSimpleName().equals(simpleName)) {
if (selectedClass != null)
......@@ -208,7 +209,8 @@ class ExtendedScenario implements Scenario {
// try interfaces
for (int i = 0; i < interfaces.length; i++) {
Class interfaceType = interfaces[i];
log.info("for interface " + interfaceType);
Monitor.log(ExtendedScenario.class, Level.INFO,
"for interface " + interfaceType);
if (interfaceType.getSimpleName().equals(simpleName)) {
if (selectedClass != null)
throw new IllegalArgumentException(
......@@ -224,7 +226,8 @@ class ExtendedScenario implements Scenario {
throw new IllegalArgumentException(
"Unknown component class with simple name="
+ simpleName);
log.info("Found " + selectedClass);
Monitor.log(ExtendedScenario.class, Level.INFO, "Found "
+ selectedClass);
} else {
// use default class
selectedClass = this.componentClass;
......@@ -233,7 +236,8 @@ class ExtendedScenario implements Scenario {
for (int i = 0; i < hosts.size(); i++) {
createAction(hosts.get(i), selectedClass, time[i], methodName,
params);
log.debug("Created actions " + methodName + " and time offset="
Monitor.log(ExtendedScenario.class, Level.DEBUG, "Created actions "
+ methodName + " and time offset="
+ time[i] + "and params=" + Arrays.asList(params));
}
// int hostId = Integer.parseInt(tokens[0]);
......@@ -247,7 +251,8 @@ class ExtendedScenario implements Scenario {
for (ScenarioAction action : actions) {
action.schedule();
}
log.info("Scheduled " + actions.size() + " actions ");
Monitor.log(ExtendedScenario.class, Level.INFO,
"Scheduled " + actions.size() + " actions ");
}
/**
......
......@@ -24,12 +24,11 @@ package de.tud.kom.p2psim.impl.scenario;
import java.lang.reflect.Method;
import org.apache.log4j.Logger;
import de.tud.kom.p2psim.api.scenario.ScenarioAction;
import de.tud.kom.p2psim.impl.util.logging.SimLogger;
import de.tudarmstadt.maki.simonstrator.api.Event;
import de.tudarmstadt.maki.simonstrator.api.EventHandler;
import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.Monitor.Level;
import de.tudarmstadt.maki.simonstrator.api.component.HostComponent;
/**
......@@ -42,7 +41,6 @@ import de.tudarmstadt.maki.simonstrator.api.component.HostComponent;
*
*/
public final class ExtendedScenarioAction implements ScenarioAction {
final static Logger log = SimLogger.getLogger(ExtendedScenarioAction.class);
// Operation operation;
/**
......@@ -84,13 +82,15 @@ public final class ExtendedScenarioAction implements ScenarioAction {
}
public void schedule() {
log.debug("Schedule action for time " + offset);
Monitor.log(ExtendedScenarioAction.class, Level.DEBUG,
"Schedule action for time " + offset);
Event.scheduleWithDelay(offset, new EventHandler() {
public void eventOccurred(Object event, int type) {
try {
method.invoke(target, params);
} catch (Exception e) {
log.error("Failed to execute action.", e);
Monitor.log(ExtendedScenarioAction.class, Level.ERROR,
"Failed to execute action.", e);
throw new RuntimeException("Failed to execute action.", e);
}
}
......
......@@ -19,11 +19,26 @@
package de.tud.kom.p2psim.impl.scenario.simcfg2;
import java.io.File;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import de.tud.kom.p2psim.api.scenario.*;
import de.tud.kom.p2psim.api.scenario.Composable;
import de.tud.kom.p2psim.api.scenario.ConfigurationException;
import de.tud.kom.p2psim.api.scenario.Configurator;
import de.tud.kom.p2psim.api.scenario.Scenario;
import de.tud.kom.p2psim.api.scenario.ScenarioFactory;
import de.tud.kom.p2psim.api.scenario.simcfg.converter.SimCfgTypeConverter;
import de.tud.kom.p2psim.impl.scenario.simcfg2.configuration.*;
import de.tud.kom.p2psim.impl.scenario.simcfg2.configuration.ConfigurationContext;
import de.tud.kom.p2psim.impl.scenario.simcfg2.configuration.SimCfgConfiguration;
import de.tud.kom.p2psim.impl.scenario.simcfg2.configuration.SimCfgConfigurationMerger;
import de.tud.kom.p2psim.impl.scenario.simcfg2.configuration.SimCfgFileParser;
import de.tud.kom.p2psim.impl.scenario.simcfg2.configuration.beans.Value;
import de.tud.kom.p2psim.impl.scenario.simcfg2.initialization.ComponentInitializer;
import de.tud.kom.p2psim.impl.scenario.simcfg2.initialization.InitializationContext;
......@@ -31,19 +46,9 @@ import de.tud.kom.p2psim.impl.scenario.simcfg2.initialization.InitializationUtil
import de.tud.kom.p2psim.impl.scenario.simcfg2.utils.SimCfgUtil;
import de.tud.kom.p2psim.impl.simengine.Simulator;
import de.tud.kom.p2psim.impl.util.Tuple;
import de.tud.kom.p2psim.impl.util.logging.SimLogger;
import de.tudarmstadt.maki.simonstrator.api.component.HostComponentFactory;
import org.apache.log4j.Logger;
import java.io.File;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SimCfgConfigurator implements Configurator {
private static Logger log = SimLogger.getLogger(SimCfgConfigurator.class);
private File configFile;
private ConfigurationContext configurationContext;
......@@ -75,13 +80,9 @@ public class SimCfgConfigurator implements Configurator {
}
private void loadConfig() {
log.info("Loading '" + configFile.getName() + "'");
SimCfgFileParser parser = new SimCfgFileParser();
this.configurationContext = parser.parseConfig(this.configFile);
String relative = new File("config").toURI().relativize(configFile.toURI()).getPath();
log.info(configurationContext.getNumberOfLoadedConfigurations() + " configs loaded through imports; started at '" + relative + "'");
}
@Override
......@@ -94,8 +95,6 @@ public class SimCfgConfigurator implements Configurator {
configuration.getSettings().put(key, new Value(Value.ValueType.STRING, uiVariables.get(key)));
}
log.info(configuration.getNumberOfTopComponents() + " top level components, " + configuration.getNumberOfComponents() + " components overall");
processConfiguration(configuration, configurationContext);
callComposableComponents();
......
......@@ -19,25 +19,26 @@
package de.tud.kom.p2psim.impl.scenario.simcfg2.configuration;
import java.util.List;
import java.util.Map;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
import de.tud.kom.p2psim.impl.scenario.simcfg2.configuration.beans.Value;
import de.tud.kom.p2psim.impl.scenario.simcfg2.configuration.beans.Variation;
import de.tud.kom.p2psim.impl.scenario.simcfg2.utils.SimCfgExpressionExecutor;
import de.tud.kom.p2psim.impl.scenario.simcfg2.utils.SimCfgUtil;
import de.tud.kom.p2psim.impl.util.Tuple;
import de.tud.kom.p2psim.impl.util.logging.SimLogger;
import org.apache.log4j.Logger;
import java.util.List;
import java.util.Map;
import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.Monitor.Level;
/**
* This class is used to create a single SimCfgConfiguration
* based on a given ConfigurationContext.
*/
public class SimCfgConfigurationMerger {
private static Logger log = SimLogger.getLogger(SimCfgConfigurationMerger.class);
SimCfgExpressionExecutor exprExecutor = new SimCfgExpressionExecutor();
/**
......@@ -177,22 +178,39 @@ public class SimCfgConfigurationMerger {
Component targetComponent = matchByAlias(sourceComponent, targetComponents);
if (targetComponent == null || alreadyMergedComponents.contains(sourceComponent.getAlias())) {
// No matching component found. Retain.
log.debug("Adding component '" + sourceComponent.getAlias() + "' there is no such target component or already another target component configured");
Monitor.log(
SimCfgConfigurationMerger.class,
Level.DEBUG,
"Adding component '"
+ sourceComponent.getAlias()
+ "' there is no such target component or already another target component configured");
adder.addComponent(sourceComponent);
} else {
// Only the first occurrence is merged
alreadyMergedComponents.add(sourceComponent.getAlias());
// Merge attributes and sub components
if (targetComponent.isRedefined()) {
log.debug("Ignoring '" + sourceComponent.getAlias() + "' as higher level config redefines component");
Monitor.log(
SimCfgConfigurationMerger.class,
Level.DEBUG,
"Ignoring '"
+ sourceComponent.getAlias()
+ "' as higher level config redefines component");
// The higher level config redefines the component. Ignore sub components.
return;
} else if (targetComponent.isMerged()) {
log.debug("Merging component '" + sourceComponent.getAlias() + "' as higher level config allows merge");
Monitor.log(SimCfgConfigurationMerger.class, Level.DEBUG,
"Merging component '" + sourceComponent.getAlias()
+ "' as higher level config allows merge");
// Higher level config allows this component to be merged with an existing one.
mergeComponent(sourceComponent, targetComponent);
} else {
log.debug("Adding component '" + sourceComponent.getAlias() + "' as higher level config neither allows a merge or redefines the component");
Monitor.log(
SimCfgConfigurationMerger.class,
Level.DEBUG,
"Adding component '"
+ sourceComponent.getAlias()
+ "' as higher level config neither allows a merge or redefines the component");
// No merging or redefine. The component is simply added as another instance
adder.addComponent(sourceComponent);
}
......
......@@ -19,20 +19,20 @@
package de.tud.kom.p2psim.impl.scenario.simcfg2.configuration;
import com.google.common.base.CharMatcher;
import de.tud.kom.p2psim.api.scenario.ConfigurationException;
import de.tud.kom.p2psim.impl.scenario.simcfg2.configuration.beans.Import;
import de.tud.kom.p2psim.impl.scenario.simcfg2.configuration.scanner.Scanner;
import de.tud.kom.p2psim.impl.util.logging.SimLogger;
import org.apache.log4j.Logger;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;
import com.google.common.base.CharMatcher;
import de.tud.kom.p2psim.api.scenario.ConfigurationException;
import de.tud.kom.p2psim.impl.scenario.simcfg2.configuration.beans.Import;
import de.tud.kom.p2psim.impl.scenario.simcfg2.configuration.scanner.Scanner;
import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.Monitor.Level;
public class SimCfgFileParser {
private static Logger log = SimLogger.getLogger(SimCfgFileParser.class);
private File currentFile; // Contains the file of the currently parsed config (changes during parsing)
......@@ -114,7 +114,8 @@ public class SimCfgFileParser {
if (currentFile != null) {
name = currentFile.getName();
}
log.debug("[" + name + "] " + output);
Monitor.log(SimCfgFileParser.class, Level.DEBUG, "[" + name + "] "
+ output);
}
private void logInfo(String output) {
......@@ -122,6 +123,7 @@ public class SimCfgFileParser {
if (currentFile != null) {
name = currentFile.getName();
}
log.info("[" + name + "] " + output);
Monitor.log(SimCfgFileParser.class, Level.DEBUG, "[" + name + "] "
+ output);
}
}
......@@ -26,8 +26,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.log4j.Logger;
import com.google.common.collect.Multimap;
import de.tud.kom.p2psim.api.scenario.Composable;
......@@ -41,7 +39,8 @@ import de.tud.kom.p2psim.impl.scenario.simcfg2.configuration.SimCfgConfiguration
import de.tud.kom.p2psim.impl.scenario.simcfg2.configuration.beans.Value;
import de.tud.kom.p2psim.impl.scenario.simcfg2.utils.SimCfgExpressionExecutor;
import de.tud.kom.p2psim.impl.scenario.simcfg2.utils.SimCfgUtil;
import de.tud.kom.p2psim.impl.util.logging.SimLogger;
import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.Monitor.Level;
import de.tudarmstadt.maki.simonstrator.api.util.XMLConfigurableConstructor;
/**
......@@ -49,7 +48,6 @@ import de.tudarmstadt.maki.simonstrator.api.util.XMLConfigurableConstructor;
* @version 1.0, 17.08.13
*/
public class ComponentInitializer {
private static Logger log = SimLogger.getLogger(ComponentInitializer.class);
/**
* The static getter method that is called on components marked with static
* in the configuration. The method is expected to have the signature
......@@ -82,11 +80,18 @@ public class ComponentInitializer {
boolean isActive = component.getGuard() != null ? expressionExecutor.evaluate(configuration, component.getGuard()) : true;
if (!isActive) {
log.debug("Ignoring: " + component.getName() + " [guard: " + component.getGuard() + ", type: " + mapping.getName() + "]");
Monitor.log(
ComponentInitializer.class,
Level.DEBUG,
"Ignoring: " + component.getName() + " [guard: "
+ component.getGuard() + ", type: "
+ mapping.getName() + "]");
continue;
}
log.debug("Processing: " + component.getName() + " [guard: " + component.getGuard() + ", type: " + mapping.getName() + "]");
Monitor.log(ComponentInitializer.class, Level.DEBUG, "Processing: "
+ component.getName() + " [guard: " + component.getGuard()
+ ", type: " + mapping.getName() + "]");
Object initializedComponent = createComponent(null, component);
context.addComponent(component, initializedComponent);
}
......@@ -100,7 +105,9 @@ public class ComponentInitializer {
boolean isActive = component.getGuard() != null ? expressionExecutor.evaluate(configuration, component.getGuard()) : true;
if (!isActive) {
log.debug("Ignoring: " + component.getName() + " [guard: " + component.getGuard() + "]");
Monitor.log(ComponentInitializer.class, Level.DEBUG, "Ignoring: "
+ component.getName() + " [guard: " + component.getGuard()
+ "]");
return null;
}
......@@ -114,7 +121,8 @@ public class ComponentInitializer {
System.out.println("test");
}
log.debug("Creating " + component.getName() + ": " + mapping.getCanonicalName());
Monitor.log(ComponentInitializer.class, Level.DEBUG, "Creating "
+ component.getName() + ": " + mapping.getCanonicalName());
ConstructorMatchInfo constructor = InitializationUtils.findBestMatchingConstructor(component, context);
Object componentObj = instantiateComponent(constructor, component);
......@@ -212,9 +220,11 @@ public class ComponentInitializer {
}
public Object constructWithConstructor(ConstructorMatchInfo matchInfo, Component component) {
log.debug("Selected: " + matchInfo);
Monitor.log(ComponentInitializer.class, Level.DEBUG, "Selected: "
+ matchInfo);
Object[] arguments = createTypedAttributes(matchInfo, component.getAttributes());
log.debug("With arguments: " + Arrays.asList(arguments));
Monitor.log(ComponentInitializer.class, Level.DEBUG, "With arguments: "
+ Arrays.asList(arguments));
try {
return matchInfo.getConstructor().newInstance(arguments);
} catch (Exception e) {
......@@ -245,7 +255,8 @@ public class ComponentInitializer {
if (index == -1) {
continue;
}
log.debug("kv: [" + key + ", " + attributes.get(key) + "], index: " + index);
Monitor.log(ComponentInitializer.class, Level.DEBUG, "kv: [" + key
+ ", " + attributes.get(key) + "], index: " + index);
Class<?> type = matchInfo.getParameterTypes()[index];
arguments[index] = SimCfgTypeConverter.convertTo(key, context.getVariableResolver().resolveValue(value), type);
}
......@@ -256,7 +267,9 @@ public class ComponentInitializer {
if (index == -1) {
continue;
}
log.debug("kv: [" + key + ", " + matchInfo.getComponentInConstructor().get(key) + "], index: " + index);
Monitor.log(ComponentInitializer.class, Level.DEBUG, "kv: [" + key
+ ", " + matchInfo.getComponentInConstructor().get(key)
+ "], index: " + index);
arguments[index] = createComponent(null, matchInfo.getComponentInConstructor().get(key));
}
......@@ -294,7 +307,11 @@ public class ComponentInitializer {
if (setterMethod != null) {
setterMethod.invoke(newComponent, typedParameter);
} else {
log.debug("Magic method has been invoked on '" + component.getName() + "' for '" + parameter + "' with value '" + typedParameter + "'.");
Monitor.log(ComponentInitializer.class, Level.DEBUG,
"Magic method has been invoked on '"
+ component.getName() + "' for '"
+ parameter + "' with value '"
+ typedParameter + "'.");
if (magicMethod.getParameterTypes()[1].equals(Value.class)) {
magicMethod.invoke(newComponent, parameter, value);
} else {
......
......@@ -24,8 +24,6 @@ import java.util.Collection;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
......@@ -37,7 +35,8 @@ import de.tud.kom.p2psim.impl.scenario.simcfg2.configuration.Component;
import de.tud.kom.p2psim.impl.scenario.simcfg2.configuration.ConfigurationContext;
import de.tud.kom.p2psim.impl.scenario.simcfg2.configuration.SimCfgConfiguration;
import de.tud.kom.p2psim.impl.scenario.simcfg2.utils.SimCfgUtil;
import de.tud.kom.p2psim.impl.util.logging.SimLogger;
import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.Monitor.Level;
import de.tudarmstadt.maki.simonstrator.api.component.HostComponentFactory;
/**
......@@ -45,7 +44,6 @@ import de.tudarmstadt.maki.simonstrator.api.component.HostComponentFactory;
* @version 1.0, 17.08.13
*/
public class InitializationContext {
private static Logger log = SimLogger.getLogger(InitializationContext.class);
private SimCfgConfigurator configurator;
private SimCfgConfiguration configuration;
......@@ -118,7 +116,8 @@ public class InitializationContext {
}
public void register(String name, Object component) {
log.debug("Registering component '" + name + "'.");
Monitor.log(InitializationContext.class, Level.DEBUG,
"Registering component '" + name + "'.");
strangeComponentNameToObjectMap.put(name, component);
}
......
......@@ -31,8 +31,6 @@ import java.util.List;
import java.util.PriorityQueue;
import java.util.Set;
import org.apache.log4j.Logger;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
import com.google.common.collect.Sets;
......@@ -44,7 +42,8 @@ import de.tud.kom.p2psim.impl.scenario.simcfg2.configuration.Component;
import de.tud.kom.p2psim.impl.scenario.simcfg2.configuration.beans.Value;
import de.tud.kom.p2psim.impl.scenario.simcfg2.utils.SimCfgUtil;
import de.tud.kom.p2psim.impl.util.Tuple;
import de.tud.kom.p2psim.impl.util.logging.SimLogger;
import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.Monitor.Level;
import de.tudarmstadt.maki.simonstrator.api.util.XMLConfigurableConstructor;
/**
......@@ -52,7 +51,6 @@ import de.tudarmstadt.maki.simonstrator.api.util.XMLConfigurableConstructor;
* @version 1.0, 17.08.13
*/
public class InitializationUtils {
private static Logger log = SimLogger.getLogger(InitializationUtils.class);
public static ConstructorMatchInfo findBestMatchingConstructor(Component component, InitializationContext context) {
......@@ -124,7 +122,8 @@ public class InitializationUtils {
while (anotherRound) {
anotherRound = false;
log.debug("Components to configure this round: " + descriptors);
Monitor.log(InitializationUtils.class, Level.DEBUG,
"Components to configure this round: " + descriptors);
Iterator iter = descriptors.iterator();
while (iter.hasNext()) {
......@@ -146,16 +145,29 @@ public class InitializationUtils {
boolean dependenciesAreConfigured = optionalStatus && requiredStatus;
if (!dependenciesAreConfigured) {
log.debug("Component: " + component.getClass().getName());
log.debug("Optional dependencies configured: " + optionalStatus + " " + Lists.newArrayList(optionalDependencies));
log.debug("Required dependencies configured: " + requiredStatus + " " + Lists.newArrayList(requiredDependencies));
Monitor.log(InitializationUtils.class, Level.DEBUG,
"Component: " + component.getClass().getName());
Monitor.log(
InitializationUtils.class,
Level.DEBUG,
"Optional dependencies configured: "
+ optionalStatus + " "
+ Lists.newArrayList(optionalDependencies));
Monitor.log(
InitializationUtils.class,
Level.DEBUG,
"Required dependencies configured: "
+ requiredStatus + " "
+ Lists.newArrayList(requiredDependencies));
anotherRound = true;
continue;
}
Method configureMethod = descriptor.getConfigureMethod();
log.debug("Configuring " + configureMethod.getName() + " of " + component.getClass().getSimpleName());
Monitor.log(InitializationUtils.class, Level.DEBUG,
"Configuring " + configureMethod.getName() + " of "
+ component.getClass().getSimpleName());
try {
if (configureMethod.getReturnType().equals(boolean.class)) {
if (!(Boolean) configureMethod.invoke(component, buildConfigureParameterArray(component, configureMethod, context))) {
......@@ -164,17 +176,27 @@ public class InitializationUtils {
iter.remove();
if (!getAvailableTypes(descriptors).contains(component.getClass())) { // TODO: getAvailableTypes is inefficient
log.debug(component.getClass().getSimpleName() + " is fully configured...");
Monitor.log(InitializationUtils.class,
Level.DEBUG, component.getClass()
.getSimpleName()
+ " is fully configured...");
configuredTypes.add(component.getClass());
}
}
} else {
log.debug("The configuration methods return type of '" + component.getClass().getSimpleName() + "' isn't boolean and thus will only be called once.");
Monitor.log(
InitializationUtils.class,
Level.DEBUG,
"The configuration methods return type of '"
+ component.getClass().getSimpleName()
+ "' isn't boolean and thus will only be called once.");
configureMethod.invoke(component, buildConfigureParameterArray(component, configureMethod, context));
iter.remove();
if (!getAvailableTypes(descriptors).contains(component.getClass())) { // TODO: getAvailableTypes is inefficient
log.debug(component.getClass().getSimpleName() + " is fully configured...");
Monitor.log(InitializationUtils.class, Level.DEBUG,
component.getClass().getSimpleName()
+ " is fully configured...");
configuredTypes.add(component.getClass());
}
}
......@@ -213,7 +235,9 @@ public class InitializationUtils {
throwExceptionIfDependsOnSelf(cls, component);
if (isAvailableConfigurationType(availableComponentTypes, cls) && !alreadyConfigured(configuredTypes, cls)) {
log.debug("Skipping " + component.getClass().getSimpleName() + ", since " + cls.getSimpleName() + " isn't configured yet");
Monitor.log(InitializationUtils.class, Level.DEBUG, "Skipping "
+ component.getClass().getSimpleName() + ", since "
+ cls.getSimpleName() + " isn't configured yet");
return false;
}
}
......@@ -224,12 +248,17 @@ public class InitializationUtils {
// TODO: Merge alreadyConfigured and isAvailableConfigurationType
private static boolean alreadyConfigured(Collection<Class> configuredTypes, Class testCls) {
for (Class cls : configuredTypes) {
log.debug("Testing " + testCls.getSimpleName() + " against " + cls.getSimpleName());
Monitor.log(
InitializationUtils.class,
Level.DEBUG,
"Testing " + testCls.getSimpleName() + " against "
+ cls.getSimpleName());
if (testCls.isAssignableFrom(cls)) {
return true;
}
}
log.debug(testCls.getSimpleName() + " is not yet configured.");
Monitor.log(InitializationUtils.class, Level.DEBUG,
testCls.getSimpleName() + " is not yet configured.");
return false;
}
......
......@@ -21,20 +21,17 @@ package de.tud.kom.p2psim.impl.scenario.simcfg2.initialization;
import java.util.Map;
import org.apache.log4j.Logger;
import de.tud.kom.p2psim.api.scenario.ConfigurationException;
import de.tud.kom.p2psim.impl.scenario.simcfg2.configuration.SimCfgConfiguration;
import de.tud.kom.p2psim.impl.scenario.simcfg2.configuration.beans.Value;
import de.tud.kom.p2psim.impl.util.logging.SimLogger;
/**
* @author Fabio Zöllner
* @version 1.0, 17.08.13
*/
public class VariableResolver {
private static Logger log = SimLogger.getLogger(VariableResolver.class);
private SimCfgConfiguration configuration;
private SimCfgConfiguration configuration;
public VariableResolver(SimCfgConfiguration configuration) {
this.configuration = configuration;
......
......@@ -19,17 +19,19 @@
*/
package de.tud.kom.p2psim.impl.scenario.simcfg2.utils;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Vector;
import com.google.common.collect.Sets;
import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.impl.scenario.simcfg2.SimCfgConfigurator;
import de.tudarmstadt.maki.simonstrator.api.Host;
import de.tudarmstadt.maki.simonstrator.api.component.HostComponent;
import de.tudarmstadt.maki.simonstrator.api.component.HostComponentFactory;
import org.apache.log4j.Logger;
import org.dom4j.Element;
import com.google.common.collect.Sets;
import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.api.scenario.ConfigurationException;
import de.tud.kom.p2psim.api.scenario.Configurator;
import de.tud.kom.p2psim.api.scenario.HostBuilder;
......@@ -37,8 +39,12 @@ import de.tud.kom.p2psim.api.scenario.simcfg.SimCfgHostBuilder;
import de.tud.kom.p2psim.api.scenario.simcfg.converter.SimCfgTypeConverter;
import de.tud.kom.p2psim.impl.common.DefaultHost;
import de.tud.kom.p2psim.impl.common.DefaultHostProperties;
import de.tud.kom.p2psim.impl.scenario.simcfg2.SimCfgConfigurator;
import de.tud.kom.p2psim.impl.scenario.simcfg2.annotations.Configure;
import de.tud.kom.p2psim.impl.util.logging.SimLogger;
import de.tudarmstadt.maki.simonstrator.api.Monitor;
import de.tudarmstadt.maki.simonstrator.api.Monitor.Level;
import de.tudarmstadt.maki.simonstrator.api.component.HostComponent;
import de.tudarmstadt.maki.simonstrator.api.component.HostComponentFactory;
/**
* This host builder uses the @Configure annotation of the SimCfgConfigurator to
......@@ -49,7 +55,6 @@ import de.tud.kom.p2psim.impl.util.logging.SimLogger;
* @version 1.0, 07.05.2012
*/
public class SimCfgDefaultHostBuilder implements SimCfgHostBuilder, HostBuilder {
private static Logger log = SimLogger.getLogger(SimCfgDefaultHostBuilder.class);
private int experimentSize = 0;
private ArrayList<HostGroup> hostGroups = new ArrayList<HostGroup>();
......@@ -73,14 +78,21 @@ public class SimCfgDefaultHostBuilder implements SimCfgHostBuilder, HostBuilder
for (String layer : hostGroup.getComponents()) {
HostComponentFactory factory = configurator.getFactory(layer);
if (factory == null) {
log.warn("Host group " + hostGroup.getGroupId() + ": Couldn't obtain factory '" + layer + "', ignoring.");
Monitor.log(SimCfgDefaultHostBuilder.class, Level.DEBUG,
"Host group " + hostGroup.getGroupId()
+ ": Couldn't obtain factory '" + layer
+ "', ignoring.");
} else {
log.debug("Found factory '" + factory.getClass().getSimpleName() + "'.");
Monitor.log(SimCfgDefaultHostBuilder.class, Level.DEBUG,
"Found factory '"
+ factory.getClass().getSimpleName() + "'.");
instanciatedLayers.add(factory);
}
}
log.info("Configuring host group '" + hostGroup.getGroupId() + "' with " + hostGroup.getSize() + " nodes.");
Monitor.log(SimCfgDefaultHostBuilder.class, Level.INFO,
"Configuring host group '" + hostGroup.getGroupId()
+ "' with " + hostGroup.getSize() + " nodes.");
// create hosts and instances of specified components for each host
Set<String> warnedKeys = Sets.newHashSet();
......@@ -101,7 +113,14 @@ public class SimCfgDefaultHostBuilder implements SimCfgHostBuilder, HostBuilder
} catch (ConfigurationException e) {
if (!warnedKeys.contains(key)) {
warnedKeys.add(key);
log.warn("Loss of precession: Could not set the attribute '" + key + "' on host group '" + hostGroup.getGroupId() + "'. Adding a custom property with type String.");
Monitor.log(
SimCfgDefaultHostBuilder.class,
Level.WARN,
"Loss of precession: Could not set the attribute '"
+ key
+ "' on host group '"
+ hostGroup.getGroupId()
+ "'. Adding a custom property with type String.");
}
hostProperties.setProperty(key, (String) SimCfgTypeConverter.convertTo(key, hostGroup.getProperties().get(key), String.class));
}
......@@ -114,7 +133,8 @@ public class SimCfgDefaultHostBuilder implements SimCfgHostBuilder, HostBuilder
}
group.add(host);
}
log.debug("Created a group with " + group.size() + " hosts");
Monitor.log(SimCfgDefaultHostBuilder.class, Level.DEBUG,
"Created a group with " + group.size() + " hosts");
hosts.addAll(group);
groups.put(hostGroup.getGroupId(), group);
}
......@@ -126,7 +146,13 @@ public class SimCfgDefaultHostBuilder implements SimCfgHostBuilder, HostBuilder
}
if (hosts.size() != experimentSize) {
log.warn("Only " + hosts.size() + " hosts were specified, though the experiment size was set to " + experimentSize);
Monitor.log(
SimCfgDefaultHostBuilder.class,
Level.WARN,
"Only "
+ hosts.size()
+ " hosts were specified, though the experiment size was set to "
+ experimentSize);
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment