Revision: 1375
Author:
alan.bar...@gmail.com
Date: Fri Jul 5 02:15:55 2013
Log: commit to get svn up to date, theres a few tweaks to the wsn
manager in the shape of more control parameters, and allowing unpredictable
node failure for edge to be ran.
http://code.google.com/p/snee/source/detail?r=1375
Added:
/branches/alan_2012_07_19_unreliableChannels/clients/successorClient/src/main/java/uk/ac/manchester/snee/client/CondorSuccessorClientTimeTwiddle.java
Modified:
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/CondorReliableChannelClient.java
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/RelibaleChannelClient.java
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/CollateResultsForLifetime.java
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/CollateResultsForTuples.java
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/Seed.java
/branches/alan_2012_07_19_unreliableChannels/clients/successorClient/src/main/java/uk/ac/manchester/snee/client/SpecificSuccessorClient.java
/branches/alan_2012_07_19_unreliableChannels/snee-core/src/main/java/uk/ac/manchester/cs/snee/common/SNEEPropertyNames.java
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/AutonomicManagerImpl.java
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/executer/Executer.java
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/Planner.java
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/model/channel/ChannelModel.java
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/model/channel/ChannelModelSite.java
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/model/channel/NoiseDataStore.java
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/successorrelation/AdaptationMonitor.java
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/successorrelation/SuccessorRelationManager.java
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/successorrelation/TimeTwiddler.java
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/unreliablechannels/LogicalOverlayNetworkHierarchy.java
=======================================
--- /dev/null
+++
/branches/alan_2012_07_19_unreliableChannels/clients/successorClient/src/main/java/uk/ac/manchester/snee/client/CondorSuccessorClientTimeTwiddle.java
Fri Jul 5 02:15:55 2013
@@ -0,0 +1,138 @@
+package uk.ac.manchester.snee.client;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+
+import uk.ac.manchester.cs.snee.EvaluatorException;
+import uk.ac.manchester.cs.snee.MetadataException;
+import uk.ac.manchester.cs.snee.SNEECompilerException;
+import uk.ac.manchester.cs.snee.SNEEController;
+import uk.ac.manchester.cs.snee.SNEEDataSourceException;
+import uk.ac.manchester.cs.snee.SNEEException;
+import uk.ac.manchester.cs.snee.client.SNEEClient;
+import uk.ac.manchester.cs.snee.common.SNEEConfigurationException;
+import uk.ac.manchester.cs.snee.common.SNEEProperties;
+import uk.ac.manchester.cs.snee.common.SNEEPropertyNames;
+import uk.ac.manchester.cs.snee.compiler.AgendaException;
+import uk.ac.manchester.cs.snee.compiler.AgendaLengthException;
+import uk.ac.manchester.cs.snee.compiler.OptimizationException;
+import uk.ac.manchester.cs.snee.compiler.WhenSchedulerException;
+import uk.ac.manchester.cs.snee.metadata.CostParametersException;
+import uk.ac.manchester.cs.snee.metadata.schema.SchemaMetadataException;
+import uk.ac.manchester.cs.snee.metadata.schema.TypeMappingException;
+import
uk.ac.manchester.cs.snee.metadata.schema.UnsupportedAttributeTypeException;
+import uk.ac.manchester.cs.snee.metadata.source.SourceMetadataException;
+import
uk.ac.manchester.cs.snee.metadata.source.sensornet.TopologyReaderException;
+import uk.ac.manchester.cs.snee.sncb.CodeGenerationException;
+import uk.ac.manchester.cs.snee.sncb.SNCBException;
+
+public class CondorSuccessorClientTimeTwiddle extends SNEEClient
+{
+
+ private static int queryid = 1;
+ protected static int testNo = 1;
+ @SuppressWarnings("unused")
+ private static boolean inRecoveryMode = false;
+
+ //private static
uk.ac.manchester.cs.snee.data.generator.ConstantRatePushStreamGenerator
_myDataSource;
+
+ public CondorSuccessorClientTimeTwiddle(String query,
+ double duration, String queryParams, String csvFile, String
sneeProps)
+ throws SNEEException, IOException, SNEEConfigurationException
+ {
+ super(query, duration, queryParams, csvFile, sneeProps);
+ }
+
+ /**
+ * The main entry point for the condor client.
+ * All input files are given by the args and the snee.properities handed
to args.
+ * @param args
+ * @throws IOException
+ * @throws InterruptedException
+ */
+ public static void main(String[] args)
+ {
+ try
+ {
+
+ Long duration = Long.valueOf("120");
+ String queryParams = "query-parameters.xml";
+
+ String query = args[0];
+ query = query.replace("_", " ");
+ String propertiesPath = args[1];
+ queryid = Integer.parseInt(args[2]);
+ //File output = new File("output");
+ //output.mkdir();
+ //File result = new File(output.toString() + "/" + "ran" + query +
queryid);
+ //result.mkdir();
+ // System.out.println("made folder output and " + output.toString()
+ "/" + "ran" + query + queryid);
+ recursiveRun(query, duration, queryParams, true, propertiesPath) ;
+ }
+ catch (Exception e)
+ {
+ System.out.println("Execution failed. See logs for detail.");
+ System.out.println("error message was " + e.getMessage());
+ logger.fatal(e);
+ e.printStackTrace();
+ }
+ }
+
+ private static void recursiveRun(String currentQuery,
+ Long duration, String queryParams,
+ boolean allowDeathOfAcquires, String
propertiesPath)
+ throws IOException
+ {
+ System.out.println("Running Tests on query " + (queryid));
+ try
+ {
+ System.out.println("initisling client");
+ CondorSuccessorClientTimeTwiddle client =
+ new CondorSuccessorClientTimeTwiddle(currentQuery, duration,
queryParams, null, propertiesPath);
+ //set queryid to correct id
+ System.out.println("getting controller");
+ SNEEController contol = (SNEEController) client.getController();
+ System.out.println("setting queryid");
+ contol.setQueryID(queryid);
+ System.out.println("running compilation");
+ client.runCompilelation();
+ System.out.println("Ran all tests on query " + queryid);
+ queryid ++;
+ }
+ catch(Exception e)
+ {
+ System.out.println("something major failed on query "+ queryid);
+ e.printStackTrace();
+ System.out.println(e.getMessage());
+ System.exit(0);
+ }
+ }
+
+ private void runCompilelation()
+ throws
+ SNEECompilerException, MalformedURLException,
+ EvaluatorException, SNEEException, MetadataException,
+ SNEEConfigurationException, OptimizationException,
+ SchemaMetadataException, TypeMappingException, AgendaException,
+ UnsupportedAttributeTypeException, SourceMetadataException,
+ TopologyReaderException, SNEEDataSourceException,
+ CostParametersException, SNCBException, IOException,
+ CodeGenerationException, NumberFormatException, WhenSchedulerException,
+ AgendaLengthException
+ {
+ if (logger.isDebugEnabled())
+ logger.debug("ENTER");
+ System.out.println("Query: " + _query);
+ SNEEController control = (SNEEController) getController();
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_SUCCESSOR, "TRUE");
+
SNEEProperties.setSetting(SNEEPropertyNames.RUN_SIM_FAILED_NODES, "FALSE");
+
SNEEProperties.setSetting(SNEEPropertyNames.RUN_AVRORA_SIMULATOR, "FALSE");
+
SNEEProperties.setSetting(SNEEPropertyNames.RUN_AVRORA_SIMULATOR, "FALSE");
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_INITILISE_FRAMEWORKS, "FALSE");
+
+ control.addQuery(_query, _queryParams);
+ getController().close();
+ if (logger.isDebugEnabled())
+ logger.debug("RETURN");
+ }
+}
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/CondorReliableChannelClient.java
Tue May 21 05:09:34 2013
+++
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/CondorReliableChannelClient.java
Fri Jul 5 02:15:55 2013
@@ -64,13 +64,18 @@
String propertiesPath = args[1];
queryid = Integer.parseInt(args[2]);
long seed = Long.parseLong(args[3]);
+ //long seed =0;
double distanceConverter = Double.parseDouble(args[4]);
+ int noFailures =0;
+ Long lifetime = new Long(0);
+ // long lifetime = Long.parseLong(args[5]);
+ //int noFailures = Integer.parseInt(args[3]);
//File output = new File("output");
//output.mkdir();
//File result = new File(output.toString() + "/" + "ran" + query +
queryid);
//result.mkdir();
// System.out.println("made folder output and " + output.toString()
+ "/" + "ran" + query + queryid);
- recursiveRun(query, duration, queryParams, true, propertiesPath,
seed, distanceConverter) ;
+ recursiveRun(query, duration, queryParams, true, propertiesPath,
seed, distanceConverter, lifetime, noFailures) ;
}
catch (Exception e)
{
@@ -84,7 +89,8 @@
private static void recursiveRun(String currentQuery,
Long duration, String queryParams,
boolean allowDeathOfAcquires, String
propertiesPath,
- Long seed, double distanceConverter)
+ Long seed, double distanceConverter,
+ Long lifetime, int noFailures)
throws IOException
{
System.out.println("Running Tests on query " + (queryid));
@@ -99,7 +105,7 @@
System.out.println("setting queryid");
contol.setQueryID(queryid);
System.out.println("running compilation");
- client.runCompilelation(seed, distanceConverter);
+ client.runCompilelation(seed, distanceConverter, lifetime,
noFailures);
System.out.println("Ran all tests on query " + queryid);
queryid ++;
}
@@ -112,7 +118,7 @@
}
}
- private void runCompilelation(Long seed, double distanceConverter)
+ private void runCompilelation(Long seed, double distanceConverter, Long
lifetime, int noFailures)
throws
SNEECompilerException, MalformedURLException,
EvaluatorException, SNEEException, MetadataException,
@@ -128,14 +134,25 @@
logger.debug("ENTER");
System.out.println("Query: " + _query);
SNEEController control = (SNEEController) getController();
+
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_SUCCESSOR, "FALSE");
SNEEProperties.setSetting(SNEEPropertyNames.RUN_SIM_FAILED_NODES, "FALSE");
SNEEProperties.setSetting(SNEEPropertyNames.RUN_AVRORA_SIMULATOR, "FALSE");
-
SNEEProperties.setSetting(SNEEPropertyNames.RUN_AVRORA_SIMULATOR, "FALSE");
+
SNEEProperties.setSetting(SNEEPropertyNames.RUN_AVRORA_SIMULATOR, "FALSE");
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_INITILISE_FRAMEWORKS, "FALSE");
-
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_NOISEMODEL, "TTX4-DemoNoiseTrace.txt");
-
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_RESILIENTLEVEL, "2");
-
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_K_ACTIVE_LEVEL, "2");
+ String k =
SNEEProperties.getSetting(SNEEPropertyNames.WSN_MANAGER_K_RESILENCE_LEVEL);
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_K_ACTIVE_LEVEL, k);
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_RESILIENTLEVEL,
k);
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_NOISEMODEL, "meyer-heavy.txt");
+ //
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_NOISEMODEL, "casino-lab.txt");
+ //
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_NOISEMODEL, "TTX4-DemoNoiseTrace.txt");
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_PATHLOSSEXPONENT, "1.6");
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_TEST_LOGICAL_EDGES, "FALSE");
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_EXECUTOR_EDGE_TUPLES, "TRUE");
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_EXECUTOR_EDGE_LIFE, "FALSE");
+ //
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_EDGE_EXPECTEDLIFETIME,
lifetime.toString());
+
//SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_EDGE_LIFETIME_UNPREDICTABLEFAILURES_NO,
new Integer(noFailures).toString());
control.addQuery(_query, _queryParams, seed, distanceConverter);
getController().close();
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/RelibaleChannelClient.java
Thu May 23 06:57:19 2013
+++
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/RelibaleChannelClient.java
Fri Jul 5 02:15:55 2013
@@ -40,9 +40,9 @@
{
private static String sep = System.getProperty("file.separator");
- private static int queryid =1;
+ private static int queryid =30;
protected static int testNo = 1;
- protected static int kResil = 4;
+ protected static int kResil = 2;
private static int max = 90;
private static File testFolder = new
File("src/main/resources/condorchecks");
private static File sneetestFolder = new File("condorchecks");
@@ -216,9 +216,9 @@
// {
//get query & schemas
// String currentQuery = queryIterator.next();
- // String currentQuery = "SELECT RSTREAM AVG(anow.x) as qx FROM A[NOW]
anow ;";
+ String currentQuery = "SELECT RSTREAM AVG(anow.x) as qx FROM A[NOW]
anow ;";
// String currentQuery = "SELECT RSTREAM anow.x as qx FROM A[NOW] anow,
B[NOW] bnow WHERE anow.x=bnow.x;";
- String currentQuery = "SELECT RSTREAM anow.x as qx FROM A[NOW]
anow ;";
+ // String currentQuery = "SELECT RSTREAM anow.x as qx FROM A[NOW]
anow ;";
// String currentQuery = "SELECT RSTREAM anow.x as qx FROM A[NOW]
anow,(SELECT bnow.x as sq1x FROM B[NOW] bnow, C[NOW] cnow WHERE
bnow.x=cnow.x) sq1 WHERE anow.x=sq1.sq1x;";
// String currentQuery = "SELECT RSTREAM sq1.sq1x as qx FROM (SELECT
anow.x as sq1x FROM A[NOW] anow, B[NOW] bnow WHERE anow.x=bnow.x) sq1,
(SELECT cnow.x as sq2x FROM C[NOW] cnow, D[NOW] dnow WHERE cnow.x=dnow.x)
sq2 WHERE sq1.sq1x=sq2.sq2x;";
@@ -279,11 +279,22 @@
SNEEProperties.setSetting(SNEEPropertyNames.RUN_AVRORA_SIMULATOR, "FALSE");
SNEEProperties.setSetting(SNEEPropertyNames.RUN_AVRORA_SIMULATOR, "FALSE");
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_INITILISE_FRAMEWORKS, "FALSE");
-
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_K_ACTIVE_LEVEL, "2");
-
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_RESILIENTLEVEL, "2");
+ String k =
SNEEProperties.getSetting(SNEEPropertyNames.WSN_MANAGER_K_RESILENCE_LEVEL);
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_K_ACTIVE_LEVEL, k);
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_SIMULATION_ITERATIONS, "20");
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_PATHLOSSEXPONENT, "3");
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_RESILIENTLEVEL,
k);
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_TEST_LOGICAL_EDGES, "FALSE");
-
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_NOISEMODEL, "src/main/resources/condorchecks/casino-lab.txt");
-
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_NOISEMODEL, "src/main/resources/condorchecks/meyer-heavy.txt");
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_EXECUTOR_EDGE_TUPLES, "TRUE");
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_EXECUTOR_EDGE_LIFE, "FALSE");
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_RESILIENTLEVEL,
k);
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_SUCCESSOR, "FALSE");
+
SNEEProperties.setSetting(SNEEPropertyNames.RUN_SIM_FAILED_NODES, "FALSE");
+
SNEEProperties.setSetting(SNEEPropertyNames.RUN_AVRORA_SIMULATOR, "FALSE");
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_INITILISE_FRAMEWORKS, "FALSE");
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_EXECUTOR_EDGE_TUPLES, "FALSE");
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_EXECUTOR_EDGE_LIFE, "TRUE");
control.addQuery(_query, _queryParams, new Long(0), new Double(1.0));
getController().close();
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/CollateResultsForLifetime.java
Tue May 21 05:09:34 2013
+++
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/CollateResultsForLifetime.java
Fri Jul 5 02:15:55 2013
@@ -19,12 +19,25 @@
{
private static String sep = System.getProperty("file.separator");
+ private static File output = new
File("/mnt/usb/1st1/condorRecent/collatedVersion/EdgeLifetimeDemoExponent1.6/");
+ private static File root = new
File("/mnt/usb/1st1/condorRecent/EdgeLifetimeDemoExponent1.6/");
+ private static File rootroot = new File("/mnt/usb/1st1/condorRecent/");
public static void main(String [] args)
{
try
{
- File root = new File("/mnt/usb/1st1/EdgeLifetime/");
+ File[] listedFiles1 = rootroot.listFiles();
+ int max1 = listedFiles1.length;
+ for(int counter1 = 0; counter1 < max1; counter1++)
+ {
+ File folder1 = listedFiles1[counter1];
+ if(folder1.isDirectory()
&& !folder1.getName().equals("collatedVersion"))
+ {
+ root = new File(folder1.toString());
+ output = new File("/mnt/usb/1st1/condorRecent/collatedVersion/"
+ folder1.getName());
+ try
+ {
HashMap<String, Query> data = new HashMap<String, Query>();
File[] listedFiles = root.listFiles();
int max = listedFiles.length;
@@ -42,11 +55,14 @@
String[] bits = fileName.split("\\.");
File outputTuplesFile = null;
outputTuplesFile = new File(folder.toString() + sep + "out.txt");
- BufferedReader in = new BufferedReader(new
FileReader(outputTuplesFile));
- ArrayList<String> tuples = locateCorrectArrayList(data, bits);
- System.out.println("reading in file for "+ bits[0]);
- readInData(in, tuples);
- in.close();
+ if(outputTuplesFile.exists())
+ {
+ BufferedReader in = new BufferedReader(new
FileReader(outputTuplesFile));
+ ArrayList<String> tuples = locateCorrectArrayList(data, bits);
+ System.out.println("reading in file for "+ bits[0]);
+ readInData(in, tuples);
+ in.close();
+ }
}
}
@@ -59,13 +75,18 @@
e.printStackTrace();
}
}
+ }
+ }
+ catch(Exception f)
+ {
+ }
+ }
private static void outputData( HashMap<String, Query> data)
throws IOException
{
HashMap<String, Query> averagedData = new HashMap<String, Query>();
File distanceOutput = null;
- File output = new File("/local/output");
output.mkdir();
Iterator<String> queryKeysIterator = data.keySet().iterator();
while(queryKeysIterator.hasNext())
@@ -139,9 +160,9 @@
Klevel k = kLevels.get(kKey);
Seed kAvergaeTuples = k.getData().get(kKey);
DecimalFormat format = new DecimalFormat("#.##");
- if(kAvergaeTuples.getaAverage().get(0) != 0)
+ // if(kAvergaeTuples.getaAverage().get(0) != 0)
out.write(queryKey + " " + kKey + " " +
format.format(kAvergaeTuples.getaAverage().get(0)) + " " +
- format.format(kAvergaeTuples.getoAverage().get(0))
+ "\n");
+ format.format(kAvergaeTuples.getoAverage().get(0))
+ " " + format.format(kAvergaeTuples.getsAverage().get(0))+ "\n");
}
out.flush();
out.close();
@@ -168,6 +189,7 @@
ArrayList<String> tuples = seeds.get(seedKey).getTuples();
allTuples.addWithDuplicates("o", Double.parseDouble(tuples.get(0)));
allTuples.addWithDuplicates("a", Double.parseDouble(tuples.get(1)));
+ allTuples.addWithDuplicates("s", Double.parseDouble(tuples.get(2)));
}
outputAveragedTuples(allTuples, maxValues, kLevel, averagedK, kKey);
@@ -176,7 +198,6 @@
private static void outputAveragedKLevel(HashMap<String, Klevel> ks,
File outputFolder)
throws IOException
{
- BufferedWriter outTop = new BufferedWriter(new
FileWriter(outputFolder.toString() + sep + "percentages"));
Iterator<String> kKeys = ks.keySet().iterator();
while(kKeys.hasNext())
{
@@ -187,7 +208,7 @@
Seed kAvergaeTuples = k.getData().get(kKey);
DecimalFormat format = new DecimalFormat("#.##");
out.write(kKey + " " +
format.format(kAvergaeTuples.getaAverage().get(0)) + " " +
- format.format(kAvergaeTuples.getoAverage().get(0)) + "\n");
+ format.format(kAvergaeTuples.getoAverage().get(0)) + " " +
format.format(kAvergaeTuples.getsAverage().get(0)) + "\n");
out.flush();
out.close();
}
@@ -201,6 +222,7 @@
Iterator<String> keys = allTuples.keySet().iterator();
ArrayList<Double> oAveragedTuples = new ArrayList<Double>(50);
ArrayList<Double> aAveragedTuples = new ArrayList<Double>(50);
+ ArrayList<Double> sAveragedTuples = new ArrayList<Double>(50);
while(keys.hasNext())
{
@@ -225,10 +247,18 @@
aAveragedTuples.add(average);
// aSDTuples.set(index, SD);
}
+ else if(key.equals("s"))
+ {
+ sAveragedTuples.add(average);
+ // aSDTuples.set(index, SD);
+ }
+
+
}
Seed average = new Seed();
average.setaAverage(aAveragedTuples);
average.setoAverage(oAveragedTuples);
+ average.setsAverage(sAveragedTuples);
average.setMax(maxValues);
k.getData().put(kKey, average);
@@ -236,6 +266,7 @@
BufferedWriter out = new BufferedWriter(new
FileWriter(kLevelOutput.toString() + sep + "avergaedTuples"));
Iterator<Double> adata = aAveragedTuples.iterator();
Iterator<Double> odata = oAveragedTuples.iterator();
+ Iterator<Double> sdata = sAveragedTuples.iterator();
adata.next();
odata.next();
int counter = 1;
@@ -244,7 +275,8 @@
{
Double a = adata.next();
Double o = odata.next();
- out.write(counter + " " + maxValues + " " + format.format(o) + " " +
format.format(a) + "\n");
+ Double s = sdata.next();
+ out.write(counter + " " + maxValues + " " + format.format(o) + " " +
format.format(a) + format.format(s) + "\n");
}
out.flush();
out.close();
@@ -256,18 +288,27 @@
throws IOException
{
String line = null;
+ tuples.add("0.0");
+ tuples.add("0.0");
+ tuples.add("0.0");
while((line = in.readLine()) != null)
{
if(line.contains("new robust"))
{
String [] results = line.split(" = ");
- tuples.add(results[1]);
+ tuples.set(1, results[1]);
}
- }
- if(tuples.size() == 0)
- {
- tuples.add("0.0");
- tuples.add("0.0");
+ if(line.contains("new lifetime"))
+ {
+ String [] results = line.split(" = ");
+ tuples.set(0, results[1]);
+ }
+ if(line.contains("static lifetime"))
+ {
+ String [] results = line.split(" = ");
+ tuples.set(2, results[1]);
+ }
+
}
}
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/CollateResultsForTuples.java
Tue May 21 05:09:34 2013
+++
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/CollateResultsForTuples.java
Fri Jul 5 02:15:55 2013
@@ -17,12 +17,13 @@
{
private static String sep = System.getProperty("file.separator");
+ private static File root = new
File("/mnt/usb/1st1/condor_edge_Tuples_Casinoex3/");
+ private static File output = new
File("/mnt/usb/1st1/condor_edge_Tuples_Casinoex3Results/");
public static void main(String [] args)
{
try
{
- File root = new File("/local/ChannelJoin/");
HashMap<String, Query> data = new HashMap<String, Query>();
File[] listedFiles = root.listFiles();
int max = listedFiles.length;
@@ -77,7 +78,6 @@
{
HashMap<String, Query> averagedData = new HashMap<String, Query>();
File distanceOutput = null;
- File output = new File("/local/output");
output.mkdir();
Iterator<String> queryKeys = data.keySet().iterator();
while(queryKeys.hasNext())
@@ -269,15 +269,15 @@
throws IOException
{
Iterator<String> keys = allTuples.keySet().iterator();
- ArrayList<Double> oAveragedTuples = new ArrayList<Double>(50);
- ArrayList<Double> aAveragedTuples = new ArrayList<Double>(50);
- ArrayList<Double> oSDTuples = new ArrayList<Double>(50);
- ArrayList<Double> aSDTuples = new ArrayList<Double>(50);
- ArrayList<Double> aAGConTuples = new ArrayList<Double>(50);
- ArrayList<Double> oAGConTuples = new ArrayList<Double>(50);
- ArrayList<Double> oAggSDTuples = new ArrayList<Double>(50);
- ArrayList<Double> aAggSDTuples = new ArrayList<Double>(50);
- for(int index = 0; index <= 50; index++)
+ ArrayList<Double> oAveragedTuples = new ArrayList<Double>(200);
+ ArrayList<Double> aAveragedTuples = new ArrayList<Double>(200);
+ ArrayList<Double> oSDTuples = new ArrayList<Double>(200);
+ ArrayList<Double> aSDTuples = new ArrayList<Double>(200);
+ ArrayList<Double> aAGConTuples = new ArrayList<Double>(200);
+ ArrayList<Double> oAGConTuples = new ArrayList<Double>(200);
+ ArrayList<Double> oAggSDTuples = new ArrayList<Double>(200);
+ ArrayList<Double> aAggSDTuples = new ArrayList<Double>(200);
+ for(int index = 0; index <= 200; index++)
{
oAveragedTuples.add(null);
aAveragedTuples.add(null);
@@ -347,6 +347,7 @@
Double a = adata.next();
Double o = odata.next();
out.write(counter + " " + maxValues + " " + format.format(o) + " " +
format.format(a) + "\n");
+ counter++;
}
out.flush();
out.close();
@@ -398,6 +399,7 @@
Double a = adata.next();
Double o = odata.next();
out.write(counter + " " + maxValues + " " + format.format(o) + " " +
format.format(a) + "\n");
+ counter++;
}
aAverageSD = 0.0;
oAverageSD = 0.0;
@@ -435,6 +437,7 @@
Double a = adata.next();
Double o = odata.next();
out.write(counter + " " + maxValues + " " + format.format(o) + " " +
format.format(a) + "\n");
+ counter++;
}
out.flush();
out.close();
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/Seed.java
Tue May 21 05:09:34 2013
+++
/branches/alan_2012_07_19_unreliableChannels/clients/reliable-channel-client/src/main/java/uk/ac/manchester/snee/client/utils/Seed.java
Fri Jul 5 02:15:55 2013
@@ -10,6 +10,7 @@
private ArrayList<Double> aAverage = new ArrayList<Double>();
private ArrayList<Double> oAAverage = new ArrayList<Double>();
private ArrayList<Double> aAAverage = new ArrayList<Double>();
+ private ArrayList<Double> sAverage = new ArrayList<Double>();
private Integer max = null;
public Seed()
@@ -83,6 +84,16 @@
output =
output.concat("|"+this.getaAverage()+"|"+this.getoAverage()+"|"+this.aAAverage+"|"+this.oAAverage);
return output;
}
+
+ public void setsAverage(ArrayList<Double> sAverage)
+ {
+ this.sAverage = sAverage;
+ }
+
+ public ArrayList<Double> getsAverage()
+ {
+ return sAverage;
+ }
}
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/clients/successorClient/src/main/java/uk/ac/manchester/snee/client/SpecificSuccessorClient.java
Fri Mar 22 04:35:43 2013
+++
/branches/alan_2012_07_19_unreliableChannels/clients/successorClient/src/main/java/uk/ac/manchester/snee/client/SpecificSuccessorClient.java
Fri Jul 5 02:15:55 2013
@@ -31,7 +31,7 @@
{
private static String sep = System.getProperty("file.separator");
- private static int queryid = 4;
+ private static int queryid = 1;
protected static int testNo = 4;
private static File sneetestFolder = new File("testsNatural");
@@ -81,7 +81,7 @@
//get query & schemas
// String currentQuery = "SELECT * FROM DetectorA[now] a,
DetectorB[now] b where a.x > b.x;";
String currentQuery = "SELECT RSTREAM anow.x as qx FROM A[NOW] anow ;";
- String propertiesPath = sneetestFolder.toString() + sep
+ "snee3.properties";
+ String propertiesPath = sneetestFolder.toString() + sep
+ "snee6.properties";
System.out.println("Running Tests on query " + (queryid));
try
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-core/src/main/java/uk/ac/manchester/cs/snee/common/SNEEPropertyNames.java
Thu May 23 06:57:19 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-core/src/main/java/uk/ac/manchester/cs/snee/common/SNEEPropertyNames.java
Fri Jul 5 02:15:55 2013
@@ -334,6 +334,12 @@
public static final String WSN_MANAGER_K_ACTIVE_LEVEL
= "wsn_manager.executor.edge.activeLevel";
public static final String
WSN_MANAGER_UNRELIABLE_CHANNELS_TEST_LOGICAL_EDGES
= "wsn_manager.executor.edge.logical.Edges";
+
+ public static final String
WSN_MANAGER_EDGE_LIFETIME_UNPREDICTABLEFAILURES
= "wsn_manager.executor.edge.unpredictable.failures";
+
+ public static final String
WSN_MANAGER_EDGE_LIFETIME_UNPREDICTABLEFAILURES_NO
= "
wsn_manager.executor.edge.unpredictable.failures.no";
+
+ public static final String WSN_MANAGER_EDGE_EXPECTEDLIFETIME
= "wsn_manager.executor.edge.expected.lifetime";
}
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/AutonomicManagerImpl.java
Thu May 23 06:57:19 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/AutonomicManagerImpl.java
Fri Jul 5 02:15:55 2013
@@ -645,6 +645,10 @@
throws NumberFormatException, SNEEConfigurationException,
OptimizationException,
SchemaMetadataException, TypeMappingException, IOException,
CodeGenerationException
{
- return this.executer.calculateLifetimeDifferenceFromDeployments(rQEP,
qep, seed, distanceConverter);
+ boolean areUnpredictable =
SNEEProperties.getBoolSetting(SNEEPropertyNames.WSN_MANAGER_EDGE_LIFETIME_UNPREDICTABLEFAILURES);
+ if(true)
+ return
this.executer.calculateUnpredictableLifetimeDifferenceFromDeployments(rQEP,
qep, seed, distanceConverter);
+ else
+ return
this.executer.calculateLifetimeDifferenceFromDeployments(rQEP, qep, seed,
distanceConverter);
}
}
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/executer/Executer.java
Thu May 23 06:57:19 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/executer/Executer.java
Fri Jul 5 02:15:55 2013
@@ -9,6 +9,7 @@
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Random;
import org.apache.log4j.Logger;
@@ -139,7 +140,6 @@
new CardinalityEstimatedCostModel(rQEP.getUnreliableAgenda(),
rQEP.getRT(), rQEP.getIOT());
model.runModel();
// fixed iterations
- numberOfIterations = 5;
HashMapList<String, RunTimeSite> sitesEnergyValues = new
HashMapList<String, RunTimeSite>();
//cycle though iterations
for(int iteration = 0; iteration < numberOfIterations; iteration ++)
@@ -206,7 +206,6 @@
{
Integer numberOfIterations =
Integer.parseInt(SNEEProperties.getSetting(
SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_SIMULATION_ITERATIONS));
- numberOfIterations = 5;
channelModel.setPacketModel(false);
HashMapList<String, RunTimeSite> sitesEnergyValues = new
HashMapList<String, RunTimeSite>();
for(int iteration = 0; iteration < numberOfIterations; iteration ++)
@@ -357,6 +356,7 @@
SchemaMetadataException, TypeMappingException, IOException
{
this.runningSites = manager.getCopyOfRunningSites();
+ network = manager.getWsnTopology();
SNEEProperties.setSetting("distanceFactor", new
Double(distanceFactor).toString());
File distanceFactorFolder =
new File(this.executerOutputFolder.toString() + sep +
distanceFactor);
@@ -678,4 +678,302 @@
}
}
}
+
+ public Storage calculateUnpredictableLifetimeDifferenceFromDeployments(
+ RobustSensorNetworkQueryPlan rQEP, SensorNetworkQueryPlan qep, Long
seed,
+ Double distanceConverter)
+ throws SNEEConfigurationException, OptimizationException,
SchemaMetadataException,
+ TypeMappingException, IOException, CodeGenerationException
+ {
+ this._metadata = this.manager.get_metadata();
+ SNEEProperties.setSetting("distanceFactor", new
Double(distanceConverter).toString());
+ File distanceFactorFolder =
+ new File(this.executerOutputFolder.toString() + sep +
distanceConverter);
+ File robustFolder = new File(distanceFactorFolder.toString() + sep
+ "lifetimeEstimate");
+ robustFolder.mkdir();
+
+ Cloner cloner = new Cloner();
+ cloner.dontClone(Logger.class);
+ RobustSensorNetworkQueryPlan ClonedrQEP = cloner.deepClone(rQEP);
+ double overallShortestLifetime = 0.0;
+ boolean runLogicalEdges =
SNEEProperties.getBoolSetting(SNEEPropertyNames.WSN_MANAGER_UNRELIABLE_CHANNELS_TEST_LOGICAL_EDGES);
+ if(runLogicalEdges)
+ {
+ this.runningSites = manager.getCopyOfRunningSites();
+ overallShortestLifetime =
calculateUnpredictableOverallQEPShortestLifetime(qep, robustFolder, seed,
rQEP);
+ }
+ else
+ {
+ this.runningSites = manager.getCopyOfRunningSites();
+ this.network = manager.getWsnTopology();
+ overallShortestLifetime =
calculateUnpredictableOverallRQEPShortestLifetime(ClonedrQEP, robustFolder,
seed);
+ }
+
+ String queryid = manager.getQueryID();
+ DecimalFormat format = new DecimalFormat("#.##");
+
+ double overallShortestLifetimeA = overallShortestLifetime /
(rQEP.getUnreliableAgenda().getDeliveryTime_ms() / 1000);
+ if(runLogicalEdges)
+ System.out.println(queryid + " " + "L" + " " +
format.format(overallShortestLifetimeA));
+ else
+ System.out.println(queryid + " " + "N" + " " +
format.format(overallShortestLifetimeA));
+
+ BufferedWriter out = new BufferedWriter(new FileWriter(new
File(this.executerOutputFolder.toString() + sep + "lifetimes")));
+ if(runLogicalEdges)
+ out.write(queryid + " " + "L" + " "+
format.format(overallShortestLifetimeA));
+ else
+ out.write(queryid + " " + "N" + " "+
format.format(overallShortestLifetimeA));
+ out.flush();
+ out.close();
+ if(runLogicalEdges)
+ return new Storage(overallShortestLifetime, 0.0);
+ else
+ return new Storage(0.0, overallShortestLifetime);
+
+ }
+
+ private double calculateUnpredictableOverallRQEPShortestLifetime(
+ RobustSensorNetworkQueryPlan rQEP,
+ File robustFolder, Long seed)
+ throws SchemaMetadataException, TypeMappingException,
OptimizationException,
+ IOException, SNEEConfigurationException, CodeGenerationException
+ {
+ this.network = this.manager.getWsnTopology();
+ this.runningSites = this.manager.getCopyOfRunningSites();
+ boolean alive = true;
+ Random random = new Random(new Long(0));
+ ArrayList<String> globalFailedNodes = new ArrayList<String>();
+ double overallRQEPShortestLifetime = 0;
+ NoiseModel Nmodel = new NoiseModel(network,
manager.getCostsParamters(), seed);
+
+ int numberofunpredictableFailures = 0;
+ int expectedNumberOfUnexpectedFailures =
+
SNEEProperties.getIntSetting(SNEEPropertyNames.WSN_MANAGER_EDGE_LIFETIME_UNPREDICTABLEFAILURES_NO);
+ Long expectedlifetime =
+ (long)
SNEEProperties.getIntSetting(SNEEPropertyNames.WSN_MANAGER_EDGE_EXPECTEDLIFETIME);
+ int timeTillUnexpectedFailure = new Double(expectedlifetime /
expectedNumberOfUnexpectedFailures).intValue();
+
+ while(alive)
+ {
+ ChannelModel channelModel =
+ new ChannelModel(rQEP.getLogicalOverlayNetwork(),
rQEP.getUnreliableAgenda(),
+ manager.getWsnTopology().getMaxNodeID(),
manager.getWsnTopology(),
+ manager.getCostsParamters(), robustFolder, seed,
true, Nmodel);
+ ArrayList<RunTimeSite> qepCostAveragesResilentQeps =
simulateRunOfRQEP(rQEP, channelModel);
+ //correct energy model values
+ Iterator<RunTimeSite> newQEPCostIterator =
qepCostAveragesResilentQeps.iterator();
+ while(newQEPCostIterator.hasNext())
+ {
+ RunTimeSite newQEPCostContainer = newQEPCostIterator.next();
+ RunTimeSite oldQEPCostContainer =
this.runningSites.get(newQEPCostContainer.toString());
+
oldQEPCostContainer.setQepExecutionCost(newQEPCostContainer.getQepExecutionCost());
+ }
+
+ Double agendaLength = null;
+ if(rQEP.getAgendaIOT() != null)
+ agendaLength =
Agenda.bmsToMs(rQEP.getAgendaIOT().getLength_bms(false))/new Double(1000);
// ms to s
+ else
+ agendaLength =
Agenda.bmsToMs(rQEP.getAgenda().getLength_bms(false))/new Double(1000); //
ms to s
+
+ //locate weakest node
+ Iterator<Node> siteIter = this.network.siteIterator();
+ String failedSite = null;
+ double shortestLifetime = Double.MAX_VALUE;
+ while (siteIter.hasNext())
+ {
+ Node site = siteIter.next();
+ RunTimeSite rSite = runningSites.get(site.getID());
+ double currentEnergySupply = rSite.getCurrentEnergy() -
rSite.getCurrentAdaptationEnergyCost();
+ double siteLifetime = (currentEnergySupply /
runningSites.get(site.getID()).getQepExecutionCost());
+ boolean useAcquires =
SNEEProperties.getBoolSetting(SNEEPropertyNames.WSN_MANAGER_K_RESILENCE_SENSE);
+ //uncomment out sections to not take the root site into account
+ if (!site.getID().equals(rQEP.getIOT().getRT().getRoot().getID())
&&
+ ((useAcquires) || (!useAcquires && !((Site) site).isSource()))
&&
+ !globalFailedNodes.contains(site.getID()))
+ {
+ if(shortestLifetime > siteLifetime)
+ {
+ if(!((Site) site).isDeadInSimulation())
+ {
+ shortestLifetime = siteLifetime;
+ failedSite = site.getID();
+ }
+ }
+ }
+ }
+
+ // got expected first node failure, need to find out if its above or
below unexpected failure
+ if(shortestLifetime > timeTillUnexpectedFailure *
(numberofunpredictableFailures+1) &&
+ numberofunpredictableFailures <
expectedNumberOfUnexpectedFailures)
+ {
+ ArrayList<String> allNodes = new ArrayList<String>();
+
allNodes.addAll(rQEP.getLogicalOverlayNetwork().getAllActiveNodesInOverlayNetwork());
+ allNodes.remove(rQEP.getRT().getRoot().getID());
+ int randomIndex = random.nextInt(allNodes.size());
+ failedSite = allNodes.get(randomIndex);
+ shortestLifetime = timeTillUnexpectedFailure *
(numberofunpredictableFailures+1);
+ numberofunpredictableFailures++;
+ }
+
+ //update runtimeSites energy levels
+ updateSitesEnergyLevels(shortestLifetime, globalFailedNodes);
+ overallRQEPShortestLifetime += (shortestLifetime * agendaLength);
+ globalFailedNodes.add(failedSite);
+ System.out.println("node " + failedSite);
+ if(failedSite.equals("52"))
+ System.out.println();
+ if(rQEP.getLogicalOverlayNetwork().canAdapt(failedSite, rQEP))
+ {
+ System.out.println("adapting");
+ ArrayList<String> failedNodeIDs = new ArrayList<String>();
+ failedNodeIDs.add(failedSite);
+ LogicalOverlayStrategy logicalOverlayGenerator =
+ new LogicalOverlayStrategy(this.manager, this._metadata,
this.manager.get_metadataManager());
+ logicalOverlayGenerator.setDeployment(this.network);
+ logicalOverlayGenerator.setQEP(rQEP);
+ rQEP.getLogicalOverlayNetwork().setDeployment(this.network);
+ logicalOverlayGenerator.setCurrentQEP(rQEP);
+ List<Adaptation> result =
+
logicalOverlayGenerator.executeHierarchyAdaptation(failedNodeIDs,
rQEP.getLogicalOverlayNetwork());
+ if(result.size() == 0)
+ alive = false;
+ rQEP = (RobustSensorNetworkQueryPlan) result.get(0).getNewQep();
+ shortestLifetime = Double.MAX_VALUE;
+ }
+ else
+ {
+ System.out.println("not adapting");
+ alive = false;
+ }
+ }
+ return overallRQEPShortestLifetime;
+ }
+
+ private double calculateUnpredictableOverallQEPShortestLifetime(
+ SensorNetworkQueryPlan QEP, File robustFolder, Long seed,
+ RobustSensorNetworkQueryPlan rQEP)
+ throws SchemaMetadataException, TypeMappingException,
OptimizationException,
+ IOException, SNEEConfigurationException, CodeGenerationException
+ {
+ boolean alive = true;
+ boolean first = true;
+ Random random = new Random(new Long(0));
+ network = manager.getWsnTopology();
+ ArrayList<String> globalFailedNodes = new ArrayList<String>();
+ double overallQEPShortestLifetime = 0;
+ LogicalOverlayStrategy logicalOverlayGenerator = new
LogicalOverlayStrategy(this.manager, this._metadata,
+
this.manager.get_metadataManager());
+ logicalOverlayGenerator.initilise(QEP, 1);
+ LogicalOverlayNetworkHierarchy skelOverlay =
+ new
LogicalOverlayNetworkHierarchy(logicalOverlayGenerator.getLogicalOverlay(),
+ QEP, manager.getWsnTopology());
+ LogicalOverlayNetwork tempOverlay =
logicalOverlayGenerator.getLogicalOverlay();
+ NoiseModel nModel = new NoiseModel(network,
manager.getCostsParamters(), seed);
+ int numberofunpredictableFailures = 0;
+ int expectedNumberOfUnexpectedFailures =
+
SNEEProperties.getIntSetting(SNEEPropertyNames.WSN_MANAGER_EDGE_LIFETIME_UNPREDICTABLEFAILURES_NO);
+ Long expectedlifetime =
+ (long)
SNEEProperties.getIntSetting(SNEEPropertyNames.WSN_MANAGER_EDGE_EXPECTEDLIFETIME);
+ int timeTillUnexpectedFailure = new Double(expectedlifetime /
expectedNumberOfUnexpectedFailures).intValue();
+
+ while(alive)
+ {
+ skelOverlay =
+ new LogicalOverlayNetworkHierarchy(tempOverlay,
+ QEP, manager.getWsnTopology());
+ ChannelModel channelModel =
+ new ChannelModel(skelOverlay, QEP.getAgendaIOT(),
+ manager.getWsnTopology().getMaxNodeID(),
manager.getWsnTopology(),
+ manager.getCostsParamters(), robustFolder, seed,
false, nModel);
+ ArrayList<RunTimeSite> qepCostAveragesQeps = simulateRunOfQEP(QEP,
channelModel, skelOverlay);
+ Iterator<RunTimeSite> newQEPCostIterator =
qepCostAveragesQeps.iterator();
+ while(newQEPCostIterator.hasNext())
+ {
+ RunTimeSite newQEPCostContainer = newQEPCostIterator.next();
+ RunTimeSite oldQEPCostContainer =
this.runningSites.get(newQEPCostContainer.toString());
+
oldQEPCostContainer.setQepExecutionCost(newQEPCostContainer.getQepExecutionCost());
+ }
+ double agendaLength = 0.0;
+ if(QEP.getAgendaIOT() == null)
+ agendaLength =
Agenda.bmsToMs(QEP.getAgenda().getLength_bms(false))/new Double(1000); //
ms to s
+ else
+ agendaLength =
Agenda.bmsToMs(QEP.getAgendaIOT().getLength_bms(false))/new Double(1000);
// ms to s
+
+ //locate weakest node
+ Iterator<Node> siteIter = this.network.siteIterator();
+ String failedSite = null;
+ double shortestLifetime = Double.MAX_VALUE;
+ while (siteIter.hasNext())
+ {
+ Node site = siteIter.next();
+ RunTimeSite rSite = runningSites.get(site.getID());
+ double currentEnergySupply = rSite.getCurrentEnergy() -
rSite.getCurrentAdaptationEnergyCost();
+ double siteLifetime = (currentEnergySupply /
runningSites.get(site.getID()).getQepExecutionCost());
+ boolean useAcquires =
SNEEProperties.getBoolSetting(SNEEPropertyNames.WSN_MANAGER_K_RESILENCE_SENSE);
+ //uncomment out sections to not take the root site into account
+ if (!site.getID().equals(rQEP.getIOT().getRT().getRoot().getID())
&&
+ ((useAcquires) || (!useAcquires && !((Site) site).isSource()))
&&
+ !globalFailedNodes.contains(site.getID()))
+ {
+ if(shortestLifetime > siteLifetime)
+ {
+ if(!((Site) site).isDeadInSimulation())
+ {
+ shortestLifetime = siteLifetime;
+ failedSite = site.getID();
+ }
+ }
+ }
+ }
+
+ // got expected first node failure, need to find out if its above or
below unexpected failure
+ if(shortestLifetime > timeTillUnexpectedFailure *
(numberofunpredictableFailures+1) &&
+ numberofunpredictableFailures <
expectedNumberOfUnexpectedFailures)
+ {
+ ArrayList<Node> allNodes = new ArrayList<Node>();
+ allNodes.addAll(QEP.getRT().getSiteTree().getNodes());
+ allNodes.remove(QEP.getRT().getRoot());
+ int randomIndex = random.nextInt(allNodes.size());
+ failedSite = allNodes.get(randomIndex).getID();
+ shortestLifetime = timeTillUnexpectedFailure *
(numberofunpredictableFailures+1);
+ numberofunpredictableFailures++;
+ }
+
+
+ if(first)
+ {
+ System.out.println("static lifetime = " + shortestLifetime);
+ first = false;
+ }
+
+ //update runtimeSites energy levels
+ updateSitesEnergyLevels(shortestLifetime, globalFailedNodes);
+ overallQEPShortestLifetime += (shortestLifetime * agendaLength);
+ globalFailedNodes.add(failedSite);
+
+
+ if(logicalOverlayGenerator.canAdapt(failedSite,
logicalOverlayGenerator.getLogicalOverlay()))
+ {
+ ArrayList<String> failedNodeIDs = new ArrayList<String>();
+ failedNodeIDs.add(failedSite);
+ System.out.println("node " + failedSite);
+ List<Adaptation> result =
logicalOverlayGenerator.adapt(failedNodeIDs,
logicalOverlayGenerator.getLogicalOverlay());
+ if(result.size() == 0)
+ alive = false;
+ else
+ {
+ QEP = result.get(0).getNewQep();
+ logicalOverlayGenerator.getLogicalOverlay().setQep(QEP);
+ logicalOverlayGenerator.update(result.get(0));
+ tempOverlay = logicalOverlayGenerator.getLogicalOverlay();
+ shortestLifetime = Double.MAX_VALUE;
+ }
+ }
+ else
+ {
+ alive = false;
+ }
+ }
+ return overallQEPShortestLifetime;
+ }
}
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/Planner.java
Thu May 23 06:57:19 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/Planner.java
Fri Jul 5 02:15:55 2013
@@ -474,7 +474,7 @@
// this._metadataManager.getCostParameters());
boolean runTupleSim =
SNEEProperties.getBoolSetting(SNEEPropertyNames.WSN_MANAGER_EXECUTOR_EDGE_TUPLES);
- if(runTupleSim)
+ if(true)
{
manager.simulateRunOfRQEP(rQEP, qep, seed, distanceConverter);
@@ -482,7 +482,7 @@
// assessor.assessOverlayChoice(storage, runningSites,
rQEP.getLogicalOverlayNetwork(),
// local, channelModel);
boolean runLifeSim =
SNEEProperties.getBoolSetting(SNEEPropertyNames.WSN_MANAGER_EXECUTOR_EDGE_LIFE);
- if(runLifeSim)
+ if(false)
{
Storage storage =
manager.calculateLifetimeDifferenceFromDeployments(rQEP, qep, seed,
distanceConverter);
System.out.println("new robust lifetime = " +
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/model/channel/ChannelModel.java
Thu May 23 06:57:19 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/model/channel/ChannelModel.java
Fri Jul 5 02:15:55 2013
@@ -247,7 +247,7 @@
}
}
// ChannelModelUtils modelUtils = new ChannelModelUtils(channelModel,
logicaloverlayNetwork);
- //modelUtils.plotPacketRates(iteration, executorFolder);
+ // modelUtils.plotPacketRates(iteration, executorFolder);
iteration++;
Set<Site> sites = IOT.getAllSites();
Iterator<Site> siteIterator = sites.iterator();
@@ -259,6 +259,7 @@
RunTimeSite rSite = new RunTimeSite(0.0, site.getID(), qepCost);
siteEnergyLevels.add(site.getID(), rSite);
}
+
return siteEnergyLevels;
}
@@ -555,8 +556,6 @@
while(siteIDIterator.hasNext())
{
String siteID = siteIDIterator.next();
- if(siteID.equals("50"))
- System.out.println();
Integer siteIDInt = Integer.parseInt(siteID);
String clusterHeadID =
logicaloverlayNetwork.getClusterHeadFor(siteID);
if(logicaloverlayNetwork.getQep().getRT().getSite(clusterHeadID) ==
null)
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/model/channel/ChannelModelSite.java
Thu May 23 06:57:19 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/model/channel/ChannelModelSite.java
Fri Jul 5 02:15:55 2013
@@ -355,8 +355,6 @@
this.packetIds.clear();
this.transmitableWindows.clear();
- if(siteID.equals("1"))
- System.out.println();
ArrayList<InstanceOperator> operators =
IOT.getOpInstancesInSpecialOrder(site);
Iterator<InstanceOperator> operatorIterator = operators.iterator();
HashMap<String, Integer> currentPacketCount = new HashMap<String,
Integer>();
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/model/channel/NoiseDataStore.java
Wed Dec 5 07:03:43 2012
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/costbenifitmodel/model/channel/NoiseDataStore.java
Fri Jul 5 02:15:55 2013
@@ -36,8 +36,9 @@
if(prr < -1)
prr = -1;
- return "SID=" + sourceID + " RSSI=" + df.format(RSSI) + " Noise=" +
noiseValue + " SNR=" +
- df.format(signalNoiseRatio) + " prr=" + df.format(prr) + " r=" +
result;
+ return "SID=" + sourceID + " r=" + result;
+ //return "SID=" + sourceID + " RSSI=" + df.format(RSSI) + " Noise=" +
noiseValue + " SNR=" +
+ //df.format(signalNoiseRatio) + " prr=" + df.format(prr) + " r=" +
result;
}
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/successorrelation/AdaptationMonitor.java
Thu May 2 05:06:41 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/successorrelation/AdaptationMonitor.java
Fri Jul 5 02:15:55 2013
@@ -1,7 +1,12 @@
package uk.ac.manchester.cs.snee.manager.planner.successorrelation;
+import java.io.BufferedInputStream;
import java.io.File;
+import java.io.FileInputStream;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
import java.util.HashMap;
import java.util.Iterator;
@@ -52,5 +57,4 @@
first = second;
}
}
-
}
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/successorrelation/SuccessorRelationManager.java
Thu May 2 05:06:41 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/successorrelation/SuccessorRelationManager.java
Fri Jul 5 02:15:55 2013
@@ -1,12 +1,17 @@
package uk.ac.manchester.cs.snee.manager.planner.successorrelation;
+import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.File;
+import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
@@ -39,6 +44,7 @@
import uk.ac.manchester.cs.snee.manager.common.AutonomicManagerComponent;
import uk.ac.manchester.cs.snee.manager.common.RunTimeSite;
import
uk.ac.manchester.cs.snee.manager.failednodestrategies.completerecompilationstrategy.CompleteReCompilationStrategy;
+import uk.ac.manchester.cs.snee.manager.planner.PlannerUtils;
import
uk.ac.manchester.cs.snee.manager.planner.costbenifitmodel.model.energy.SiteEnergyModel;
import
uk.ac.manchester.cs.snee.manager.planner.successorrelation.successor.Successor;
import
uk.ac.manchester.cs.snee.manager.planner.successorrelation.successor.SuccessorPath;
@@ -107,22 +113,24 @@
//search though space
search = new TabuSearch(manager.getWsnTopology(), runningSites,
_metadata, _metadataManager, TABUFolder);
SuccessorPath bestSuccessorRelation =
search.findSuccessorsPath(initialPoint);
- new SuccessorRelationManagerUtils(this.manager,
successorFolder).writeSuccessorToFile(bestSuccessorRelation.getSuccessorList(), "finalSolution");
- AdaptationMonitor.
- outputAdaptationDataBetweenSuccessors(bestSuccessorRelation,
_metadata,
- _metadataManager,
successorFolder,
- deployment, runningSites,
manager.getCostsParamters());
+ System.out.println("overall lifetime is " +
bestSuccessorRelation.overallSuccessorPathLifetime());
+ // new SuccessorRelationManagerUtils(this.manager,
successorFolder).writeSuccessorToFile(bestSuccessorRelation.getSuccessorList(), "finalSolution");
+ //AdaptationMonitor.
+ //outputAdaptationDataBetweenSuccessors(bestSuccessorRelation,
_metadata,
+ // _metadataManager,
successorFolder,
+ // deployment, runningSites,
manager.getCostsParamters());
// testAdaptiveLifetime(bestSuccessorRelation);
- writeSuccessorPathToFile(bestSuccessorRelation);
- // SuccessorPath bestSuccessorRelation = readInSuccessor();
+ // writeSuccessorPathToFile(bestSuccessorRelation);
+ // SuccessorPath bestSuccessorRelation = readInSuccessor();
//new PlannerUtils(successorFolder,
this.manager).writeSuccessorToFile(bestSuccessorRelation.getSuccessorList(), "finalSolution");
//added code to see how well tuned the plan is without recomputing
- // BufferedWriter out = new BufferedWriter(new FileWriter(new
File(successorFolder.toString() + sep + "records")));
- // SuccessorPath twiddleBestSuccessorRelation =
TimeTwiddler.adjustTimesTest(bestSuccessorRelation, runningSites, false,
search, out);
+ BufferedWriter out = new BufferedWriter(new FileWriter(new
File(successorFolder.toString() + sep + "records")));
+ SuccessorPath twiddleBestSuccessorRelation =
TimeTwiddler.adjustTimesTest(bestSuccessorRelation, runningSites, false,
search, out);
// new PlannerUtils(successorFolder,
this.manager).writeSuccessorToFile(twiddleBestSuccessorRelation.getSuccessorList(), "finalTwiddleSolution");
- //out.close();
+ out.close();
+ System.exit(0);
//added code to see how well tuned successor is by adjusting and
then running entire system
// SuccessorPath twiddleBestSuccessorRelation =
TimeTwiddler.adjustTimesTest(bestSuccessorRelation, runningSites, true,
search);
// new PlannerUtils(successorFolder,
this.manager).writeSuccessorToFile(twiddleBestSuccessorRelation.getSuccessorList(), "finalTwiddleSolutionWithRecompute");
@@ -716,11 +724,11 @@
try
{
//use buffering
- File f = new File("s/s" );
+ File f = new
File("/local/successorResults/successorOutputNewTimeSystem/qos1/query2/AutonomicManData/Planner/successorRelation/successorFile"
);
System.out.println(f.getAbsolutePath());
if(f.exists())
{
- InputStream file = new
FileInputStream("/local/SNEEUnreliableChannels/SNEE/clients/successorClient/successorFile");
+ InputStream file = new
FileInputStream("/local/successorResults/successorOutputNewTimeSystem/qos1/query2/AutonomicManData/Planner/successorRelation/successorFile");
InputStream buffer = new BufferedInputStream( file );
ObjectInput input = new ObjectInputStream ( buffer );
//deserialize the List
@@ -742,8 +750,8 @@
System.out.println("read in successor failed" + e.getMessage());
return null;
}
- }
-*/
+ }*/
+
private void writeSuccessorPathToFile(SuccessorPath
bestSuccessorRelation)
{
try
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/successorrelation/TimeTwiddler.java
Fri Feb 15 10:30:48 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/successorrelation/TimeTwiddler.java
Fri Jul 5 02:15:55 2013
@@ -66,7 +66,7 @@
bestPath = original;
runningSites = originalRunningSites;
//clear agenda count of last successor (being not correct)
- usableCopy.getSuccessorList().get(usableCopy.successorLength()
-1).setAgendaCount(0);
+
usableCopy.getSuccessorList().get(usableCopy.successorLength()).setAgendaCount(0);
//iterate though successors adjusting times
ArrayList<Successor> successors = usableCopy.getSuccessorList();
@@ -103,7 +103,7 @@
bestPath = cloner.deepClone(usableCopy);
}
int finalPlanLifetime =
-
usableCopy.getSuccessorList().get(usableCopy.successorLength()-1).calculateLifetime();
+
usableCopy.getSuccessorList().get(usableCopy.successorLength()).calculateLifetime();
if(WithRecompute && finalPlanLifetime > 0)
{
SuccessorPath path =
search.findSuccessorsPath(cloner.deepClone(usableCopy));
@@ -133,7 +133,7 @@
bestPath = cloner.deepClone(usableCopy);
}
int finalPlanLifetime =
-
usableCopy.getSuccessorList().get(usableCopy.successorLength()-1).calculateLifetime();
+
usableCopy.getSuccessorList().get(usableCopy.successorLength()).calculateLifetime();
if(WithRecompute && finalPlanLifetime > 0)
{
SuccessorPath path =
search.findSuccessorsPath(cloner.deepClone(usableCopy));
=======================================
---
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/unreliablechannels/LogicalOverlayNetworkHierarchy.java
Tue May 21 05:09:34 2013
+++
/branches/alan_2012_07_19_unreliableChannels/snee-wsn-manager/src/main/java/uk/ac/manchester/cs/snee/manager/planner/unreliablechannels/LogicalOverlayNetworkHierarchy.java
Fri Jul 5 02:15:55 2013
@@ -288,11 +288,22 @@
{
String bestID = locateCheapestNode(equivNodes, clusterHeadID);
equivNodes.remove(bestID);
- activeClusters.add(clusterHeadID, bestID);
- activeClustersPriority.put(bestID, priority);
- activeClustersOriginalPriority.put(bestID, priority);
- priority++;
- leftOverResilience--;
+ if(bestID == null)
+ {
+ System.out.println("wrong input paramter for k_active level.
reducing to " + (Integer.parseInt(
+
SNEEProperties.getSetting(SNEEPropertyNames.WSN_MANAGER_K_ACTIVE_LEVEL))
-1) + " to sort out errors");
+
SNEEProperties.setSetting(SNEEPropertyNames.WSN_MANAGER_K_ACTIVE_LEVEL, new
Integer(Integer.parseInt(
+
SNEEProperties.getSetting(SNEEPropertyNames.WSN_MANAGER_K_ACTIVE_LEVEL))
-1).toString());
+ leftOverResilience--;
+ }
+ else
+ {
+ activeClusters.add(clusterHeadID, bestID);
+ activeClustersPriority.put(bestID, priority);
+ activeClustersOriginalPriority.put(bestID, priority);
+ priority++;
+ leftOverResilience--;
+ }
}
}
}
@@ -425,6 +436,8 @@
{
ArrayList<String> cluster = activeClusters.get(key);
Set<String> setCluster = new TreeSet<String>();
+ if(cluster == null)
+ System.out.println();
setCluster.addAll(cluster);
cluster.clear();
Iterator<String> iterator = setCluster.iterator();
@@ -982,5 +995,20 @@
{
this.deployment = network;
}
+
+ public ArrayList<String> getAllActiveNodesInOverlayNetwork()
+ {
+ ArrayList<String> returnedArray = new ArrayList<String>();
+ Iterator<String> keySetIterator =
this.getActiveClusters().keySet().iterator();
+ while(keySetIterator.hasNext())
+ {
+ String key = keySetIterator.next();
+ ArrayList<String> nodesInCluster = this.getActiveClusters().get(key);
+ returnedArray.addAll(nodesInCluster);
+ if(!returnedArray.contains(key))
+ returnedArray.add(key);
+ }
+ return returnedArray;
+ }
}