Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Simonstrator
PeerfactSim.KOM
Commits
c14e4e1f
Commit
c14e4e1f
authored
Mar 13, 2017
by
Clemens Krug
Browse files
Merge remote-tracking branch 'remotes/origin/master' into nr/resAlloc-clemens
parents
829d5123
2ac40564
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/de/tud/kom/p2psim/impl/topology/DefaultTopologyComponent.java
View file @
c14e4e1f
...
...
@@ -91,6 +91,8 @@ public class DefaultTopologyComponent implements TopologyComponent {
private
MovementModel
movementModel
;
private
PlacementModel
placementModel
;
private
final
boolean
registerAsInformationProviderInSiS
;
/**
* Create a TopologyComponent for the current host.
...
...
@@ -100,7 +102,7 @@ public class DefaultTopologyComponent implements TopologyComponent {
* @param movementModel
*/
public
DefaultTopologyComponent
(
SimHost
host
,
Topology
topology
,
MovementModel
movementModel
,
PlacementModel
placementModel
)
{
MovementModel
movementModel
,
PlacementModel
placementModel
,
boolean
registerAsInformationProviderInSiS
)
{
this
.
topology
=
topology
;
this
.
host
=
host
;
this
.
position
=
new
PositionVector
(
0
,
0
);
...
...
@@ -114,6 +116,7 @@ public class DefaultTopologyComponent implements TopologyComponent {
if
(
this
.
placementModel
!=
null
)
{
this
.
placementModel
.
addComponent
(
this
);
}
this
.
registerAsInformationProviderInSiS
=
registerAsInformationProviderInSiS
;
}
@Override
...
...
@@ -132,52 +135,54 @@ public class DefaultTopologyComponent implements TopologyComponent {
position
.
set
(
placementModel
.
place
(
this
));
}
try
{
final
SiSComponent
sis
=
host
.
getComponent
(
SiSComponent
.
class
);
sis
.
provide
().
nodeState
(
SiSTypes
.
PHY_LOCATION
,
new
SiSDataCallback
<
Location
>()
{
Set
<
INodeID
>
localID
=
INodeID
.
getSingleIDSet
(
getHost
().
getId
());
@Override
public
Location
getValue
(
INodeID
nodeID
,
SiSProviderHandle
providerHandle
)
throws
InformationNotAvailableException
{
if
(
nodeID
.
equals
(
getHost
().
getId
()))
{
return
getLastLocation
();
}
else
{
throw
new
InformationNotAvailableException
();
if
(
registerAsInformationProviderInSiS
)
{
try
{
final
SiSComponent
sis
=
host
.
getComponent
(
SiSComponent
.
class
);
sis
.
provide
().
nodeState
(
SiSTypes
.
PHY_LOCATION
,
new
SiSDataCallback
<
Location
>()
{
Set
<
INodeID
>
localID
=
INodeID
.
getSingleIDSet
(
getHost
().
getId
());
@Override
public
Location
getValue
(
INodeID
nodeID
,
SiSProviderHandle
providerHandle
)
throws
InformationNotAvailableException
{
if
(
nodeID
.
equals
(
getHost
().
getId
()))
{
return
getLastLocation
();
}
else
{
throw
new
InformationNotAvailableException
();
}
}
@Override
public
Set
<
INodeID
>
getObservedNodes
()
{
return
localID
;
}
@Override
public
SiSInfoProperties
getInfoProperties
()
{
return
new
SiSInfoProperties
();
}
});
// Provide Underlay topology
Event
.
scheduleImmediately
(
new
EventHandler
()
{
@Override
public
void
eventOccurred
(
Object
content
,
int
type
)
{
if
(
getHost
().
getLinkLayer
().
hasPhy
(
PhyType
.
WIFI
))
{
new
SiSTopologyProvider
(
sis
,
SiSTypes
.
NEIGHBORS_WIFI
,
DefaultTopologyComponent
.
this
,
getTopologyID
(
NetInterfaceName
.
WIFI
,
true
),
DefaultTopologyComponent
.
class
);
}
@Override
public
Set
<
INodeID
>
getObservedNodes
()
{
return
localID
;
}
@Override
public
SiSInfoProperties
getInfoProperties
()
{
return
new
SiSInfoProperties
();
}
});
// Provide Underlay topology
Event
.
scheduleImmediately
(
new
EventHandler
()
{
@Override
public
void
eventOccurred
(
Object
content
,
int
type
)
{
if
(
getHost
().
getLinkLayer
().
hasPhy
(
PhyType
.
WIFI
))
{
new
SiSTopologyProvider
(
sis
,
SiSTypes
.
NEIGHBORS_WIFI
,
DefaultTopologyComponent
.
this
,
getTopologyID
(
NetInterfaceName
.
WIFI
,
true
),
DefaultTopologyComponent
.
class
);
}
}
},
null
,
0
);
}
catch
(
ComponentNotAvailableException
e
)
{
// OK
}
,
null
,
0
);
}
catch
(
ComponentNotAvailableException
e
)
{
// OK
}
}
}
...
...
src/de/tud/kom/p2psim/impl/topology/TopologyFactory.java
View file @
c14e4e1f
...
...
@@ -71,6 +71,8 @@ public class TopologyFactory implements HostComponentFactory {
private
WaypointModel
waypointModel
;
private
ObstacleModel
obstacleModel
;
private
boolean
registerAsInformationProviderInSiS
=
false
;
private
static
NetMeasurementDB
measurementDB
=
null
;
...
...
@@ -125,7 +127,7 @@ public class TopologyFactory implements HostComponentFactory {
* movement model.
*/
TopologyComponent
toCo
=
new
DefaultTopologyComponent
(
host
,
topo
,
movement
,
placement
);
movement
,
placement
,
registerAsInformationProviderInSiS
);
/*
* Need to register TopoViews as movement listeners, as they might need
...
...
@@ -227,6 +229,17 @@ public class TopologyFactory implements HostComponentFactory {
public
void
setUseRegionGroups
(
boolean
useRegionGroups
)
{
TopologyFactory
.
useRegionGroups
=
useRegionGroups
;
}
/**
* Option to disable the default behavior of nodes registering as
* topology providers.
*
* @param registerAsLocationProviderInSiS
*/
public
void
setRegisterAsInformationProviderInSiS
(
boolean
registerAsInformationProviderInSiS
)
{
this
.
registerAsInformationProviderInSiS
=
registerAsInformationProviderInSiS
;
}
/**
* Allows GNP-based strategies to retrieve the unique
...
...
src/de/tud/kom/p2psim/impl/util/db/dao/metric/MeasurementDAO.java
View file @
c14e4e1f
...
...
@@ -168,6 +168,41 @@ public class MeasurementDAO extends DAO {
groupMetric
,
observationDuration
,
describesWholeSimulation
);
addToPersistQueue
(
measurement
);
}
/**
* Stores a statistical description of a series of values for group of
* hosts and a given spatial coordinate.
*
* @param metricDesc
* The {@link MetricDescription} which describes the metric.
* @param groupName
* The host group
* @param time
* A time for the measurement in simulation time
* @param stats
* the {@link DescriptiveStatistics} object used as input
* @param observationDuration
* duration of this observation in simulation time
* @param describesWholeSimulation
* true, if this measurement is a description of the WHOLE
* simulation
* @param locationX
* x coordinate for spatial sampling
* @param locationY
* y coordinate for spatial sampling
*/
public
static
void
storeSpatialGroupStatisticsMeasurement
(
MetricDescription
metricDesc
,
String
groupName
,
long
time
,
DescriptiveStatistics
stats
,
long
observationDuration
,
boolean
describesWholeSimulation
,
int
locationX
,
int
locationY
)
{
Metric
metric
=
MetricDAO
.
lookupStatisticsMetric
(
metricDesc
);
GroupMetric
groupMetric
=
GroupMetricDAO
.
lookupGroupMetric
(
metric
,
groupName
);
MeasurementStatistic
measurement
=
new
MeasurementStatistic
(
time
,
stats
,
groupMetric
,
observationDuration
,
describesWholeSimulation
,
locationX
,
locationY
);
addToPersistQueue
(
measurement
);
}
/**
* Store a list-based measurement with a key (i.e., as a
...
...
src/de/tud/kom/p2psim/impl/util/db/metric/MeasurementStatistic.java
View file @
c14e4e1f
...
...
@@ -118,12 +118,15 @@ public class MeasurementStatistic implements GroupMetricBound {
@Column
(
nullable
=
true
,
name
=
"[perc5]"
)
private
Double
perc5
;
// 5
@Column
(
nullable
=
true
,
name
=
"[skewness]"
)
private
Double
skewness
;
@Column
(
nullable
=
true
,
name
=
"[kurtosis]"
)
private
Double
kurtosis
;
@Column
(
nullable
=
true
,
name
=
"[locationX]"
)
private
Integer
locationX
;
@Column
(
nullable
=
true
,
name
=
"[locationY]"
)
private
Integer
locationY
;
@Column
(
nullable
=
true
,
name
=
"[isSpatial]"
)
private
boolean
isSpatial
;
/**
* Mapping to group metric
...
...
@@ -155,6 +158,36 @@ public class MeasurementStatistic implements GroupMetricBound {
this
.
groupMetric
=
groupMetric
;
}
/**
* Creates a {@link Measurement}-Object using the provided
* {@link DescriptiveStatistics} object, with spatial data attached.
*
* @param time
* The simulation time for to this measurement as Date
* @param stats
* the {@link DescriptiveStatistics} object
* @param hostMetric
* The reference to the {@link HostMetric}-Object, which
* describes this metric. Is used for the mapping.
* @param observationDuration
* duration of the observation
* @param describesWholeSimulation
* true, if this measurement describes the whole simulation
* @param locationX
* x coordinate for spatial sampling
* @param locationY
* y coordinate for spatial sampling
*/
public
MeasurementStatistic
(
long
time
,
DescriptiveStatistics
stats
,
GroupMetric
groupMetric
,
long
observationDuration
,
boolean
describesWholeSimulation
,
int
locationX
,
int
locationY
)
{
this
(
time
,
stats
,
observationDuration
,
describesWholeSimulation
);
this
.
groupMetric
=
groupMetric
;
this
.
locationX
=
locationX
;
this
.
locationY
=
locationY
;
this
.
isSpatial
=
true
;
}
/**
* Internal - write statistics
*
...
...
@@ -182,9 +215,8 @@ public class MeasurementStatistic implements GroupMetricBound {
this
.
perc97
=
checkForSpecialNumbers
(
stats
.
getPercentile
(
97.7
));
this
.
perc5
=
checkForSpecialNumbers
(
stats
.
getPercentile
(
5
));
this
.
perc95
=
checkForSpecialNumbers
(
stats
.
getPercentile
(
95
));
this
.
skewness
=
checkForSpecialNumbers
(
stats
.
getSkewness
());
this
.
kurtosis
=
checkForSpecialNumbers
(
stats
.
getKurtosis
());
this
.
std
=
checkForSpecialNumbers
(
stats
.
getStandardDeviation
());
this
.
isSpatial
=
false
;
}
/**
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment