33import java .io .File ;
44import java .io .IOException ;
55import java .net .URL ;
6- import java .util .Collection ;
7- import java .util .HashSet ;
8- import java .util .List ;
9- import java .util .Optional ;
10- import java .util .Set ;
6+ import java .util .*;
117
128import org .apache .commons .io .FileUtils ;
9+ import org .apache .logging .log4j .LogManager ;
10+ import org .apache .logging .log4j .Logger ;
1311import org .eqasim .core .analysis .run .RunLegAnalysis ;
1412import org .eqasim .core .analysis .run .RunPublicTransportLegAnalysis ;
1513import org .eqasim .core .analysis .run .RunTripAnalysis ;
3634import org .eqasim .core .simulation .vdf .utils .AdaptConfigForVDF ;
3735import org .eqasim .core .standalone_mode_choice .RunStandaloneModeChoice ;
3836import org .eqasim .core .standalone_mode_choice .StandaloneModeChoiceConfigurator ;
39- import org .eqasim .core .tools .ExportActivitiesToShapefile ;
40- import org .eqasim .core .tools .ExportNetworkRoutesToGeopackage ;
41- import org .eqasim .core .tools .ExportNetworkToShapefile ;
42- import org .eqasim .core .tools .ExportPopulationToCSV ;
43- import org .eqasim .core .tools .ExportTransitLinesToShapefile ;
44- import org .eqasim .core .tools .ExportTransitStopsToShapefile ;
37+ import org .eqasim .core .tools .*;
4538import org .junit .After ;
4639import org .junit .Before ;
4740import org .junit .Test ;
4841import org .matsim .api .core .v01 .Scenario ;
4942import org .matsim .api .core .v01 .TransportMode ;
50- import org .matsim .api .core .v01 .population .Person ;
43+ import org .matsim .api .core .v01 .population .* ;
5144import org .matsim .contribs .discrete_mode_choice .model .DiscreteModeChoiceTrip ;
5245import org .matsim .contribs .discrete_mode_choice .model .mode_availability .ModeAvailability ;
5346import org .matsim .core .config .CommandLine ;
5750import org .matsim .core .controler .AbstractModule ;
5851import org .matsim .core .controler .Controler ;
5952import org .matsim .core .scenario .ScenarioUtils ;
53+
6054import org .matsim .core .utils .misc .CRCChecksum ;
6155
6256import com .google .inject .Inject ;
@@ -73,16 +67,21 @@ public void setUp() throws IOException {
7367
7468 @ After
7569 public void tearDown () throws IOException {
76- FileUtils .deleteDirectory (new File ("melun_test" ));
70+ // FileUtils.deleteDirectory(new File("melun_test"));
7771 }
7872
7973 private void runMelunSimulation (String configPath , String outputPath ) {
8074 runMelunSimulation (configPath , outputPath , null , null );
8175 }
8276
8377 private void runMelunSimulation (String configPath , String outputPath , String inputPlansFile , Integer lastIteration ) {
84- EqasimConfigurator eqasimConfigurator = new EqasimConfigurator ();
8578 Config config = ConfigUtils .loadConfig (configPath );
79+ runMelunSimulation (config , outputPath , inputPlansFile , lastIteration );
80+ }
81+
82+ private void runMelunSimulation (Config config , String outputPath , String inputPlansFile , Integer lastIteration ) {
83+ EqasimConfigurator eqasimConfigurator = new EqasimConfigurator ();
84+
8685 eqasimConfigurator .updateConfig (config );
8786 ((ControllerConfigGroup ) config .getModules ().get (ControllerConfigGroup .GROUP_NAME )).setOutputDirectory (outputPath );
8887 if (inputPlansFile != null ) {
@@ -424,11 +423,32 @@ public void testPipeline() throws Exception {
424423 runCutterV2 ();
425424 }
426425
426+ @ Test
427+ public void testBaseDeterminism () throws Exception {
428+ Logger logger = LogManager .getLogger (TestSimulationPipeline .class );
429+ Config config = ConfigUtils .loadConfig ("melun_test/input/config.xml" );
430+ runMelunSimulation (config , "melun_test/output_determinism_1" , null , 2 );
431+
432+ config = ConfigUtils .loadConfig ("melun_test/input/config.xml" );
433+ runMelunSimulation (config , "melun_test/output_determinism_2" , null , 2 );
434+
435+ for (String comparedFile : new String []{"output_plans.xml.gz" }) {
436+ long firstCrc = CRCChecksum .getCRCFromFile ("melun_test/output_determinism_1/" + comparedFile );
437+ long secondCrc = CRCChecksum .getCRCFromFile ("melun_test/output_determinism_2/" +comparedFile );
438+ assert firstCrc == secondCrc ;
439+ }
440+ }
441+
427442 public void runPopulationRouting () throws CommandLine .ConfigurationException , IOException , InterruptedException {
428443 RunPopulationRouting .main (new String [] {
429444 "--config-path" , "melun_test/input/config.xml" ,
430- "--output-path" , "melun_test/output/routed_population.xml.gz"
445+ "--output-path" , "melun_test/output/routed_population.xml"
446+ });
447+ RunPopulationRouting .main (new String [] {
448+ "--config-path" , "melun_test/input/config.xml" ,
449+ "--output-path" , "melun_test/output/routed_population_again.xml"
431450 });
451+ assert CRCChecksum .getCRCFromFile ("melun_test/output/routed_population.xml" ) == CRCChecksum .getCRCFromFile ("melun_test/output/routed_population_again.xml" );
432452 }
433453
434454 public void runStandaloneModeChoice () throws CommandLine .ConfigurationException , IOException , InterruptedException {
0 commit comments