-
Notifications
You must be signed in to change notification settings - Fork 249
Expand file tree
/
Copy pathSampleScenarioFactory.java
More file actions
99 lines (88 loc) · 3.63 KB
/
SampleScenarioFactory.java
File metadata and controls
99 lines (88 loc) · 3.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*
* Title: EdgeCloudSim - Scenario Factory
*
* Description: VehicularScenarioFactory provides the default
* instances of required abstract classes
*
* Licence: GPL - http://www.gnu.org/copyleft/gpl.html
* Copyright (c) 2017, Bogazici University, Istanbul, Turkey
*/
package edu.boun.edgecloudsim.applications.tutorial4;
import edu.boun.edgecloudsim.cloud_server.CloudServerManager;
import edu.boun.edgecloudsim.cloud_server.DefaultCloudServerManager;
import edu.boun.edgecloudsim.core.ScenarioFactory;
import edu.boun.edgecloudsim.edge_orchestrator.EdgeOrchestrator;
import edu.boun.edgecloudsim.edge_server.EdgeServerManager;
import edu.boun.edgecloudsim.edge_client.MobileDeviceManager;
import edu.boun.edgecloudsim.edge_client.mobile_processing_unit.DefaultMobileServerManager;
import edu.boun.edgecloudsim.edge_client.mobile_processing_unit.MobileServerManager;
import edu.boun.edgecloudsim.mobility.MobilityModel;
import edu.boun.edgecloudsim.task_generator.LoadGeneratorModel;
import edu.boun.edgecloudsim.network.NetworkModel;
public class SampleScenarioFactory implements ScenarioFactory {
// total number of mobile (edge) devices to simulate
private int numOfMobileDevice;
// total simulation duration in seconds
private double simulationTime;
// orchestration policy identifier (e.g., "RANDOM", "LOAD_AWARE", etc.)
private String orchestratorPolicy;
// scenario identifier used to switch parameter sets / behavior
private String simScenario;
/**
* Constructs a scenario factory with all core simulation parameters.
* @param _numOfMobileDevice number of mobile devices
* @param _simulationTime total simulation time (seconds)
* @param _orchestratorPolicy selection key for edge orchestrator strategy
* @param _simScenario scenario key influencing load, mobility, network, etc.
*/
SampleScenarioFactory(int _numOfMobileDevice,
double _simulationTime,
String _orchestratorPolicy,
String _simScenario){
// store provided configuration for later object creation
orchestratorPolicy = _orchestratorPolicy;
numOfMobileDevice = _numOfMobileDevice;
simulationTime = _simulationTime;
simScenario = _simScenario;
}
@Override
public LoadGeneratorModel getLoadGeneratorModel() {
// Provides workload generator matching device count, duration and scenario specifics
return new SampleLoadGenerator(numOfMobileDevice, simulationTime, simScenario);
}
@Override
public EdgeOrchestrator getEdgeOrchestrator() {
// Returns orchestrator instance configured with chosen policy
return new SampleEdgeOrchestrator(orchestratorPolicy, simScenario);
}
@Override
public MobilityModel getMobilityModel() {
// Mobility model uses number of devices and simulation time
return new SampleMobilityModel(numOfMobileDevice,simulationTime);
}
@Override
public NetworkModel getNetworkModel() {
// Network model may vary by scenario (e.g., different latency patterns)
return new SampleNetworkModel(numOfMobileDevice, simScenario);
}
@Override
public EdgeServerManager getEdgeServerManager() {
// Edge server manager instantiated per scenario configuration
return new SampleEdgeServerManager(simScenario);
}
@Override
public CloudServerManager getCloudServerManager() {
// Default cloud manager (central cloud)
return new DefaultCloudServerManager();
}
@Override
public MobileDeviceManager getMobileDeviceManager() throws Exception {
// Creates and maintains mobile devices and their tasks
return new SampleMobileDeviceManager();
}
@Override
public MobileServerManager getMobileServerManager() {
// Provides local (on-device) processing capability abstraction
return new DefaultMobileServerManager();
}
}