-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGELOG
executable file
·1153 lines (967 loc) · 47.7 KB
/
CHANGELOG
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
MJ 07/07/09
- When there was a loop in the filesystem under one of the directories in
the classpath, peersim hung when trying to collect the available classes
(in order to resolve the underspecified classnames in the config). I added
a temporary fix, which stops the directory walk after a (very large) maximal
number of visited directories. Now peersim does not hang, but either fails
with a clear packet, or executes the simulation. Note that jar files
are not affected, and they can still be arbitrarily large. When one needs
an excessive number of packages (thousands) then a jar file is a better
idea.
- Added a new constructor to RandPermutation for convenience.
MJ 09/06/09
- Fixed a bug in Scheduler found by Alberto. In the event
based engine if "from" was set, the component was
executed at "from" irrespective of "until". Besides,
a negative "step" was not checked for.
AM 07/06/09
- Solved a bug identified by Mark: constant expressions
were not allowed on RangeSimulator ranges, although they
were explicitly mentioned in the documentation. The doc
has been improved as well, saying that variables are not
allowed inside ranges.
- Changed constants in peersim.rangesime.TaggedOutputStream
from protected to public; this is needed to use the same
class in other simulator implementations. Added the @config
specification, so they appear correctly in the documentation.
AM 31/05/09
- Solved a bug in peersim.edsim.EDSimulator
ClassCastException generated inside a user Control object
were caught by the EDSimulator and a misleading error
packet was printed.
AM 30/04/09
- Solved a bug in ConfigContainer.
ConfigContainer.getInstance(String name, Object def) was
returning the default object even if name was defined but
a parameter was missing in the definition of the created
object. Thanks to Marco Biazzini for spotting this.
- Improved the functionality of configuration file parsing
in peersim.config.ConfigProperties. Now, each of the
command line parameter is first interpreted as a file
name, and if this file does not exist, it is set as
a configuration property. This allows the configuration
to be split in multiple files.
Thanks to Jordi Pujol for suggesting the idea and
implementing a first version of it.
AM 8/11/2008
VERSION 1.0.4 RELEASED
------------------------------------------------------------------
------------------------------------------------------------------
AM 8/10/08
- Modified EDSimulator to print additional information in case
of protocols not implementing a particular interface. Class cast
exceptions launched by event processing are not swallowed any
more.
AM 6/6/08
- Solved a bug in EDSimulator. Time was not reset to zero when network
is re-initialized, this caused some problems in case of multiple
experiments.
AM 24/05/08
- Solved a bug in ConfigContainer; some exceptions were incorrectly
swallowed.
AM 23/05/08
- Improved KingParser; it now performs some check about file format, and
print out the appropriate exceptions.
MJ 21/05/08
- Fixed serious initialization bug in MedianStats
- Changed OracleIdleProtocol, UniformRandomTransport and UnreliableTransport
into final, due to their unconventional implementation of "clone" (they are
singletons)
- Fixed minor issues in IncrementalFreq related to java conventions on equals
and hashCode
- Added "close" for various unclosed streams (no serious issues, but it was
not nice in any case)
- Various minor issues found by FindBugs (that is also responsible for the
items above)
MJ 20/04/08
- Refactoring of EDSimulator to support the application of any event queue
implementation. The even queue can now be configured to be any extrenal class
implementing peersim.edsim.PriorityQ. Tests show there is no noticeable
penalty for performance. (credit to Jan Schoenherr for pointing out some
issues with edsim)
- Fixing various problems with handling integer overflow in time management in
EDSimulator, Heap, and Scheduler.
MJ 18/04/08
- Changed truncation to rounding (as stated in the class docs) for
DynamicNetwork. This fixes issues with small network sizes (or small "add"
percentages).
- Fixed bug in RandNI: it assumed it is called after insertion, while the
specification says it is called before insertion. This caused misbehavior for
networks of size 1, and, more annoyingly, resulted in the node with index 0
_never_ being linked to in any network of any size
(note that for simulations that use shuffle (and most do)
this is not noticable) (credit for spotting goes to Balazs Banhelyi).
AM 07/04/08
- Applied the javadoc patch of Filippo Giunchedi
MJ 18/03/08
- Added a "k" parameter to WireFromFile
- Added some popular file formats to GraphPrinter (as well as GraphIO)
MJ 24/02/08
- Added a "background" parameter to PeakDistribution and improved the docs of
DynamicNetwork and OscillatingNetwork.
AM 04/02/08
- Solved a bug in phase management for both cd and ed
simulations: at the end of the first experiment, phase was set
to POST_SIMULATION and in subsequent experiments it stayed that way
(never set back to UNKNOWN_PHASE).
(Credits to Alessandro Russo)
MJ 19/01/08
- Changed default of parameter "maxsize" in DynamicNetwork and
OscillatingNetwork. Now the default is: no limit on the size.
- Changed confusing parameter name "network.maxSize" to
"network.initialCapacity".
- Fixed a bug in Network.setCapacity: now it removes nodes correctly.
AM 24/12/2007
VERSION 1.0.3 RELEASED
------------------------------------------------------------------
------------------------------------------------------------------
AM 18/12/07
- Reverted peersim.core.Scheduler to 1.19 version (removing Spyros
changes), but adding the control to avoid at and step/from/until
at the same time.
MJ 08/12/07
- Fixed RandRemoval: now it accepts parameter "n=1" (credits to Norbert
Tolgyesi for spotting this)
MJ 04/11/07
- The previous fix by Spyros for wireRingLattice introduced and
inconsistency between the documentation and the behavior of the method.
Documentation (and therefore the interface specification) is now changed,
consistent with the new behavior. (Also simplified the implementation)
- Added a sensible error packet when an event has null destination
(uninformative error packet detected by sourceforge user "pemf")
SV 15/07/2007
- Corrected small bug in GraphFactory.wireRingLattice giving wrong number of
neighbors for odd k.
- Corrected tiny bug in EDSimulator.nextExperiment ensuring that 8<=rbits<64.
SV 18/05/2007
- Updated core.Scheduler, to allow more flexible schedules.
It is now possible to define final-only schedules. For ED, simply
define "FINAL", but not "step". For CD, define "FINAL", and "at -1", or
"until -1".
- Added more checking in core.Scheduler. An exception is thrown if "at" and
"from", "until", or "step" are defined at the same time. In ED it is possible
to omit "step", in order to define final-only schedules. But if "from" or
"until" are defined while "step" is missing, a warning will be printed.
A warning will also print if the defined schedule results in no single
execution.
- Fixed bug in edsim.ControlEvent, which was executing a control even if its
time was negative.
- Fixed a large number of small typos in various files (in comments).
MJ 10/05/2007
- Bug fixed: was not possible to add nodes to an empty network (how strange
this bug came out so late...; in any case, fixed now).
(credit goes to Samuel Bernard)
AM 05/04/2007
VERSION 1.0.2 RELEASED
------------------------------------------------------------------
------------------------------------------------------------------
AM 04/04/2007:
- Solved a bug in RangeSimulator: creation of several processes may
end up in "too many files" errors due to the fact stdin, stderr and
stdout files are not closed when a process terminates. See
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4784692
http://www.thescripts.com/forum/thread18019.html
- Changed peersim.config.Operators, peersim.vector.Getter,
peersim.vector.Setter to public, to enable classes
external to the package to use their functionalities.
- Reverted peersim.vector.Observer to the version of 1.0.1; the
functionalities introduced with previous changes will be
re-intruduced as an external package associated to Peersim.
MJ 03/04/2007:
- Clarified the specification of the Cleanable interface by stating that
none of the methods of the implementing object are guaranteed to work
after calling onKill, however, toString should work as a recommendation.
Accordingly, updated toString in IdleProtocol and SimpleNewscast
(credit goes to Samuel Bernard)
MJ 29/03/2007
- Set len=0 in IdleProtocol.onKill (credit goes to Samuel Bernard)
- Fixed GeneralNode.setFailState to always throw an exception after
the node is DEAD (not only when OK is attempted to set)
(credit goes to Samuel Bernard)
AM 24/02/2007
- Modified peersim.config.Operators to fix a bug in the comparison
between two values.
AM 17/02/2007
- Modified VectorObserver to enable the specification of a generic
condition (not only aggregate == value, but any kind of complex
condition). This break the compatibility with the previous version
in the cvs, but not with the previous released version.
- Improved the RangeSimulator to better manage the shutdown of
subprocesses that are spawn by the RangeSimulator. This has
required the change of the methods from static to normal ones.
MJ 05/01/2007
- Fixed a bug in examples.loadbalance.LBObserver
MJ 01/12/2006
- Restored ExtendedRandom to its state in release 1.0.1 and modified
CommonState to respect that interface
AM 22/11/2006
- Added the possibility of customizing the Random generator through
a new configuration parameter (random). The specified generator
must extend ExtendedRandom.
AM 19/11/2006
- Modified CDSimulator, EDSimulator, in order to get rid of
the "fake" parameters. Now CheckConfig stops simulations
by simple setting simulation.cycle or simulation.endtime to 0.
- Added a new transport class for trace initialization. Unlike
KingParser, this class reads a more compact, binary format
(described in the file); this implies a large gain with
respect to efficiency (less than a second w.r.t. to several
seconds).
MJ 18/11/2006
- Added the possibility to shuffle iteration order without actually
shuffling the nodes in the network. This however needs more memory.
It can be accessed by a new parameter "shuffle" to controls
FullNextCycle and NextCycle, which is not defined by default.
- Added a new example on using the event based engine, and also added
a simple tutorial to the web page about it.
AM 28/10/2006
- Moved the ID creation before the creation of the Protocol objects
belonging to a node. This solve problems for Protocols that
assume that the ID field was filled.
- Added a MemoryObserver reports to provide information about
memory usage.
- Modified peersim.vector.Getter and peersim.vector.GetterSetterFinder
to handle boolean values as numbers (0/1). This enables to use class
from the vector package to perform statistics on boolean fields.
- Modified persim.vector.VectorObserver to add the capability to
stop the simulation when one of the aggregate values is equal
to a predefined parameter.
- Added the VectorComparator class to be used to sort node
arrays based on a specified getter.
- Added a new tool to check whether a config file contains errors
or not. It works as follows: it initializes a network and the
associated controls in the same way as the PeerSim simulator,
but terminates before actually starting the simulation. All packet
errors are reported.
- Separated the container task of Configuration from the its goal
of being a unique central point for accessing configuration.
This is useful (note: not needed) in a distributed simulator
I'm writing, where multiple configuration files are loaded
(for multiple purposes).
MJ 22/04/2006
VERSION 1.0.1 RELEASED
------------------------------------------------------------------
------------------------------------------------------------------
MJ 06/04/06
- Added a sort method to peersim.core.Network
MJ 30/12/05
- Fixed docs of the Watts-Strogatz model in GraphFactory
MJ 14/12/05
- Fixed bug (checking for uninitialized coordinates) in
examples.hot.WireInetTopology.
SV 05/12/2005
- Fixed RandNI.initialize() to ensure no loop edges are added (as was already
stated in its javadoc).
MJ 24/11/2005
- Cleaned up some minor type-safety issues in GraphAlgorithms (no behavioral
change)
- Changed CDScheduler so that it schedules protocols even if they specify
a "from" parameter in the future, with respect to the call to CDScheduler
SV 24/11/2005
- Changed GraphStats to stop calculating average path length, once it is known
to be infinite (one node is unreachable).
- Fixed BallExpansion. Previously, in case of unreachable nodes, although the
average path length was (correctly) set to Infinity, the getMaxCount()
property returned inconsistent data. Now it returns the number of nodes at
maximum distance (Infinity), that is, the number of unreachable nodes.
- Now GraphAlgorithms.bfs() sets the (trivial) distance to node "from" to 0.
- Cleaned up code duplication in GraphAlgorithms.flooding(). It now makes use
of GraphAlgorithms.dist().
- Also fixed comments in GraphAlgorithms.
MJ 23/11/2005
- Fixed a bug in GraphStats found by Spyros: it now handles partitioned
graphs correctly
- Fixed the same bug in BallExpansion as well
- Changed the classdocs of GraphStats that incorrectly stated that
it prints IncrementalStats.toString instead of just the average
AM 22/11/2005
- Corrected a bug in RangeSimulator, pointed out by Spyros
(problems with jvm.options parameter)
AM 11/11/2005
VERSION 1.0 RELEASED
------------------------------------------------------------------
------------------------------------------------------------------
AM 11/11/2005
- Fixed a bug identified by Gian Paolo, using his suggestion;
the unqualified classname search in jar files was not working
under Windows, because files in Jar files are '/'-separated,
independently from the platform.
GJ 10/11/05
- Fixed a bug in BasicBalance: did not work it quota != 0
- Refreshed LBObsever.
GJ 9/11/05
- Refactored hot example package. Many features (e.g.,in-degree) are now
obtained using standard peersim components. See the config-file.
- Any Linkable protocol can be initialized by the HOT topology.
- RobustenessEvaluator removed, use RandRemoval instead.
- InetNodeProtocol renamed to: InetCoordinates.
AM 08/11/05
- Fixed a bug in ClassFinder (a problem with file separator in
Windows).
MJ 07/11/05
- Initial (unfinished) refactoring of examples.hot. To be completed soon.
GJ 06/11/05
- Added printing of timestamp too in AverageObserver and QuotaObserver.
- Refreshed config files.
AM 04/11/05
- Fixed a bug in Configuration (the class was uncorrectly
evaluating mixed integer-floating point expressions).
MJ 04/11/05
- Refreshed example.aggregation and related stuff.
- Refreshed example.loadbalance and related stuff.
MJ 02/11/05
- Fixed a bug in the Tarjan algorithm that detects strongly connected
components.
AM 30/10/05
- RangeSimulator, again. While testing, I discovered a race
condition that could generate an IOException. Detected and
ignored now. Also, refactored the code a bit.
GJ 30/10/05
- Small example package fix.
MJ 30/10/05
- I hope this is the last change that breaks exisiting config files:
I replaced the "overlay.*" parameters by "network.*". Overlay was
plainly misleading and since we broke so many things already, I chose not to
complicate the code with handling obsolate names.
GJ 29/10/05
- Updated example package.
- Added example package documentation.
MJ 29/10/05
- Fixed some small bugs related to running multiple experiments. Now
the initialization of the new network is done properly, and memory is
released as early as possible when a new experiment is started.
Now onKill is called also on protocols that implement it, when removing
the old network.
AM 29/10/05
- Improved the RangeSimulator with a mechanism to kill the
child process if the RangeSimulator is killed by an
external signal.
AM 28/10/05
- Slightly changed the structure of RangeSimulator, to offer a
feature (printing of time) that I was using in the previous
version and I haven't re-implemented yet.
AM 26/10/05
- Fixed the RangeSimulator
- Removed some unused IOException (and catch blocks) in
example.hot.InetObserver.
MJ 25/10/05
- Reverted back to System.out for logging, and instead added a way
of redirecting stdout to a custom PrintStream class, that can
process the output (property "simulation.stdout" can define a PrintStream
class for Simulator).
AM 24/10/05
- Re-implemented the RangeSimulator, now moved to its own package
peersim.rangesim. Now, each experiment is run in a separate
jvm, to avoid to break the contract that peersim parameters cannot
be changed during the life of a JFM execution.
- Added a mechanism to detect multiple bracket blocks referring to the
same property (something you get when you comment a property definition
without commenting the associated bracket block)
- Added a configurable logging support Peersim. Very simple for now,
with two implementations: a DefaultLogger, that replicates the
original behavior of Peersim; a RangeLogger, that replicates the
behavior of the original RangeSimulator (by adding the value
of range variables to the printed lines).
- Now, all reports use Log to print their data, with the execptions
of GraphStats.
MJ 24/10/05
- Random seed is now explicitly set and printed to stderr before all
experiments when using Simulator, also for simulation.experiments>1.
(thanks to Simon Patarin for pointing me to this issue)
- Removed a forgotten debug println from DynamicNetwork.
SV 11/10/05
- Changed initial value of GeneralNode.counterID from 0 to -1, so that the
prototype node gets ID -1, and the normal nodes get IDs 0, 1, 2, ...
Note that the API does not constrain this sequence, and could change
any time in the future.
AM 04/10/05
- Small changes in the documentation, to adapt to the new doclet.
MJ 03/10/05
- Cleanup of core package docs
- Addition of ID to Node interface (long requested feature)
MJ 02/10/05
- Another things where we break backwards compatibility: we got rid of
CloneNotSupportedException in all clonings, so you'll have to slightly
modify your implementations to catch any exceptions thrown by the superclass
inside the method. This exception was annoying because there is no way it
can be thrown anyway.
- Cleaned up the graph package documentation, and fixed a bug in
SubGraphEdges.degree.
AM 02/10/05
- Implemented a rounding mechanism in Integers to avoid rounding
errors.
MJ 01/10/05
- Fixed some bugs in the previous commit
- Chnaged the semantics of Configuration.getInstance(String,Object):
now the object is not a parameter that is passed to the constructor,
but a default object that is returned when the given name is not defined.
This behavior is more consistent, and if pars need to be passed to an
object, it can be solved in other ways (eg through methods after
construction).
- Changed CDScheduler so that in now stores scheduling info for protocols
in a public static array
- Cleaned up the transport package documentation.
- Cleaned up the edsim package documentation.
AM 01/10/05
- Fixed all protocols to comply to the (String) signature constructor
(the protocols classes)
- Removed some unused code (several classes)
- Fixed some (but not all) warnings generated by the use of generic
data structures in JDK 1.5 (several classes)
- Used a feature of JDK1.5 to generate better roundings of configuration
parameters (in Integers.java)
GJ 30/09/05
- Fixed all protocols to comply to the (String,Object) signature constructor.
MJ 30/09/05
- cleaned up the Configuration package. Note that the behavior of getInstance
is changed; the only consequence is that now protocols MUST implement
the (String,Object) constructor (so far (String) was also accepted).
In any case if your classes don't conform, you'll get a clean error packet,
and you can fix them in a few seconds (by adding an Object par).
SV 30/09/05
- Updated peersim.config.FastConfig to support multiple linkables per protocol,
and fixed respective documentation.
GJ 26/09/05
- Removed example.hot.InetFactory class: old and unused.
- Updated exscript.txt config file.
GJ 22/09/05
- Updated examples config files.
- Refactored example.hot.* package (now using WireByMethod class).
- Updated example docs.
- Updated REAME file (fixed command line instruction).
SV 17/09/05
- Fixed a bug in IncrementalFreq: When a negative item is submitted, the number
of inserted items (n) is now not increased.
- Added method add(int i,int k) in IncrementalFreq, that can add an item k times
at once.
MJ 17/09/05
- Cleanup of peersim.util package; mainly docs, but some bugfixes too
eg in IncrementalFreq.equals.
- new methods in GraphIO and GraphFactory
- Cleanup of peersim.reports; fixed a bug too: GraphObserver did not work
correctly if more overlays were observed simultaneously.
- fixed bug in simulators related to setting end time (did not work with
multiple experiments)
MJ 15/09/05
- Finishing the cleanup of the dynamics package
- Added WireByMethod which is quite powerful and flexible for wiring
networks. We no longer need to define a separate Control for all different
kinds of networks.
MJ 13/09/05
- Cleaned up the dynamics package. A noticable change that will break
existing config files: GrowingNetwork is gone. Its functionality is
provided by DynamicNetwork. A small change though: config par "percentage"
is no longer supported, but you can set -1<add<1 which is taken as
proportion. The "down" parameter is gone too: it was only a hack, that
will maybe reincarnate in another class.
- renamed peersim.cdsim.Simulator to CDSimulator
MJ 11/09/05
- Some more classdocs cleanup, some refactoring of config property loading
- Added WireRegRootedTree that can wire a regular rooted tree
MJ 10/09/05
- Revised the vector package again, including some major refactoring and
complete revision of documentation.
- Changed the behavior of the vector observers, now they accept only one method
to observe. Simplicity wins here over features.
MJ 09/09/05
- Went through the classdocs of the cdsim package, and revised/fixed/extended
it significantly. Planning to do it with all the packages...
- Small changes in WireGraph to support non-overly graphs better (see classdocs)
- NeighbourListGraph can now be constructed with a specified size
- Some documentation fixes
MJ 29/08/05
- Added possibility to look up protocol names based on pid in Configuration.
Error messages should use that method instead of dumping the pid.
MJ 28/08/05
- Fixed a bug in Scheduler: now all times are realy long
- Also longified the Transport interface
- Added transport to FastConfig
MJ 21/08/05
- some minor documentation fixes
- CDScheduler can now accept a list of protocols instead of only one
MJ 19/08/05
- Implemented the Tarjan algorithm to detect the strongly connected components
in GraphAlgorithms. ConnectivityObserver now has a "type" parameter that
can be set to "scc" to get strongly connected components. Note that for
large diameter, large strongly connected components we can get stack
overflows because the implementation is recursive: it should be fixed soon!
But until then better than nothing...
MJ 16/08/05
- minor fixes in the documentation
- WireFromFile now extends WireGraph
MJ 15/08/05
- Added MethodInvoker, a Control that can invoke a "void method()" type of
method
- Some minor cleanup on error packet printing
MJ 10/08/05
I added a number of changes, some of them will break existing config files:
- Refactoring the Wire* controls. They have a common superclass now and
the NodeInitializer implementations were separated into separate classes
(RandNI and StarNI).
- The Wire* classes now have a public Graph field that can be used to
initialize arbitrary graphs (see classdocs of WireGraph).
- In all classes that used it, now "undir" and "undirected" are both
accepted as equivalent parameters.
- RENAMED A VERY POPULAR CLASS: now WireRegularRandom is WireKOut, which
is the correct name for it. In the past it caused lots of confusion, we
finally got rid of the bogous name.
- RENAMED VERY POPULAR PARAMETERS: instead of "degree", now every class
uses "k".
MJ 06/08/05
- The endtime parameter's semantics slightly changed: now the interval
ov valid times is from zero to endtime, _exclusive_ the endtime.
- Refactored the cycle based protocol support in the event driven
engine. Now we have a Control (and also NodeInitializer): CDScheduler
that schedules the first execution of the protocol instances. It has
a "nexcycle" parameter in which an object can be specified that extends
NextCycleEvent and that specifies the delay until the next execution of
the protocol instance. A few example implementations are included too.
AM 23/07/05
- Cleaned up some imports, that were generating warnings in Eclipse.
Cleaned up documentation, changed access rights of all parameters
but one (Node.PAR_PROT) to private, and added @config tags.
Started a first clean-up of documentation and code.
Some reformatting, particularly in the examples.
NOTE: This commit is HUGE, but it is just an aesthetic commit; no
fundamental code has been changed.
MJ 21/07/05
- Added some implementations of NextCycleEvent
MJ 20/07/05
- Refactored cdsim.Simulator so that it now only loads and executes
controls, and calling the protocols is done by a control too. By default
the old config files work. However, this modification makes it possible
to totaly freely order the controls and the execution of a cycle, and
(with the help of NextCycle) it is possible to run only a subset of the
protocols, some controls in between and then some other subset. These
features however will be used only for hacking...
- Removed the "simulation.shuffle" parameter, shuffling can now be
added by the control cdsim.Shuffle. This way the time within the cycle and
the schedule of the shuffling is as flexible as for any other control.
MJ 17/07/05
- Cleaned up the time issue and introduced CommonState.getIntTime for
protocols that need timestamps but want to avoid longs (for performance
resons). CDState.getCycle and CDState.getCycleT are used only when
absolutely necessary. A good practice is to use CommonState methods
only, to allow compatibility with the evend driven engine.
More to come...
MJ 16/07/05
- added support for wrapping cycle driven protocol implementations into
an event driven simulation. All calls to nextCycle are managed by a separate
event and the "step" parameter of the scheduler for the protocol serves
as the cycle length. It can be different for all protocols, and the
way the consequtive cycles are scheduled can be changed by extending
NextCycleEvent.
More to come...
MJ 15/07/05
- some strong refactoring of the entire stuff.
THIS UPDATE WILL MOST LIKELY BRAKE YOUR APPLICATIONS
it is a first step towards a new release which will not be fully backwards
compatible, and will go through a major cleanup and reorganization, something
we should have done a long time ago...
Some changes that have been made:
- Make sure packages util, graph and config compile without the other
packages: they are fully independent units now. This involved moving some
stuff: most notably, CommonRandom's gone, look for "r" in CommonState.
"Log" was moved to core too. Some classes in util have a new Random
argument as a result.
- Removed difference between Observer and Dynamics: it was not enforcable
anyway and introduced bloat in the code, and some config issues.
Now there is only "Control", which might or might not change the network
being simulated. As a result, code is simpler, config is very flexible
without the need for scheduling tricks to determine the order of
execution: just use alphabetial roder or the "include" trick in the
config file ("include.control"). In your config files replace both
"observer" and "dynamics" with "control".
- Removed the possibility to simulate cycle driven protocols in the event
driven engine. Will re-introduce it soon in a different form.
- Moved all cycle-driven related stuff to the cdsim package. In particular,
CommonState was split, and some parts became CDState. The Scheduler is
now model independent.
- The supported platform now is JDK 1.5, we no longer guarantee that peersim
runs/compiles under 1.4. Now it "almost" compiles under 1.4, but it might
change in the future.
More to come...
MJ 09/07/05
- Major refactoring of the vector package, drastically simplifying the
code. Not backwards compatible (changed config par names). Also,
LinearDistribution no longer implements NodeInitializer.
- Removed redundant interface specs from GeneralNode
MJ 05/07/05
- Slight refactoring of new vector package (more to come)
AM 02/07/05
- Modified the vector package in order to make it generic. Now
dynamics and observers can initialize any protocol field,
with SingleValue used as default. Note: uses Jdk1.5, not
really needed, but makes the code easier to write
(autoboxing + varargs in reflective invoke)
MJ 01/07/05
- fixed a (very infrequent) numeric bug in IncrementalStats
(variance could be negative due to rounding errors)
MJ 15/06/05
- fixed a performance bug in GraphObserver
AM 14/06/2005
VERSION 0.4 RELEASED
------------------------------------------------------------------
------------------------------------------------------------------
AM 14/06/05
- Modified the configuration mechanism in order to perform computations
with BigInteger instead of doubles converted to long. To do so, this
version compiles only with jep2.3.0 and djep1.0.0.
- Added an experimental configuration mechanism that tries to give
suggestions when properties are not found. just an attempt, can
be removed.
- Corrected a bug in peersim.cdsim.OrderSimulator, in order to enable
to run dynamics with the FINAL specification.
- Simplified the protocol creation mechanism in GeneralNode; in this
way, protocols that have been already created can be referenced by
other protocols in their constructors.
- corrected some documentation
MJ 14/06/05
- Added some methods to IncrementalFreq (submitted by Spyros Voulgaris)
MJ 31/05/05
- Removed unused argument from IncrementalFreq.getN(), and changed some
of the fields in IncrementalFreq from private to protected
- CHANGED BEHAVIOUR OF WireRegualrRandom. It was not realy regular all the time
because neighbors were sampled with replacement, and no parallel edges were
added. Now it is realy regular. This has only a negligible effect on most
of the scenarios peersim was used in so far, but at least this is finally
fixed.
MJ 26/05/05
- getString now removes trailing spaces from string value parameters
in the configuration
AM 13/05/05
- modified the configuration parsing mechanism with a very simple extension
for brackets.
Writing something like:
observer.degree GraphObserver
{
protocol newscast
undir
graphobserver.fast
}
defines four properties:
observer.degree GraphObserver
observer.degree.protocol newscast
observer.degree.undir
observer.degree.graphobserver.fast
See documentation for additional details (and limits).
- added a debug.config feature to the config mechanism. Three possibilities:
debug.config -> only properties read during initializion, prints name=value
debug.config=contex -> as debug.config, but with additional information
debug.config=full -> all the properties, prints name=value
- solved a bug in the config exceptions (MissingParameter and IllegalParameter);
the mechanism showing the line where the configuration method is invoked
was producing uncorrect lines sometimes.
- DynamicNetwork: added support for turning down processes (instead of
crashing)
- peersim.util.Log: added an optional parameter that can be used to
to print the time in logged line
- RangeSimulator: ranges were trasnformed from configuration strings
to doubles, stored as doubles, then transformed back to strings.
Now ranges are stored as strings, so it possible to use string
ranges.
- transport package: now transports can be used not only to send
messages, but also to obtain an estimation of latency. The idea
is to provide a light-weight way to exploit the latency model
of transports in cycle-based protocols.
- added the possibility to run dynamics at the end of simulation
(with the FINAL time specification)
GJ 10/05/05
- Fixed Scamp compilation bug (with JDK 5.0).
- Other classes minor compilation warnings (unnecessary includes).
MJ 31/03/05
- Fixed a bug in DegreeStats related to the observation of dead links.
MJ 30/03/05
- For DegreeStats and BallExpansion: randomized the node selection when
the sample is only a subset of the network.
MJ 26/03/05
- Added boolean support to configuration (only constants so far).
Similar in function to "contains", take care. In the future we might add
boolean expressions, this is why it was added now.
- Added FastUndirGraph, which is faster in most cases than ConstUndirGraph but
uses a huge amount of memory.
- Refactored the graph observers so that they all extend GraphObserver
(check classdocs), that takes care of (among other things) hugely improving
performance when many graph observers are run together (pre-processing of
the overlay is done only once). As a result, some old config files change
their semantics: now for all observers, directed graph is the default, and
"undir" must be specified for an undirected version.
MJ 24/03/05
- Fixed a memory leak. It was present when simulating churn with
Linkable protocols. Now Linkables have to implement an "onKill"
method that is called when the hosting node gets removed from the
network. It should release links to other nodes. This prevents the
creation of large trees of unused objects with a root being referenced by a
live object.
MJ 11/03/2005
- BallExpansion is revised and now accepts parameter "stats".
- IncrementalStats is extended with a new method to add an item k times.
MJ 03/03/2005
- GraphPrinter is extended with a new format and the possibility to save the
undirected version of the overlay. See class docs.
MJ 02/03/2005
- DegreeStats is extended by new options, to collect statistics about
dead links. See class documentation.
MJ (adding changes by Spyros Voulgaris) 16/02/2005
- DegreeStats now uses the (now correct) degree method instead of the size
of the returned neighbor list.
MJ (adding changes by Spyros Voulgaris) 15/02/2005
- OverlayNetwork had bugs: degree and getNeighbours did not conform
to the contract that only those links count for which both ends
are up. Fixed that. this means, degree(i) will return the number of
neighbors that are up, and will return 0 if node i is down. Similarly,
getNeighbours(i) returns an empty list if node i is down.
MJ 02/02/2005
- peersim.vetor.Normalizer now handles all zero vectors by throwing
an exception.
MJ 01/02/2005
- added the "undirected" option to WireFromFile, which makes it possible
to convert a directed graph stored in a file to an undirected one.
MJ 22/01/2005
- Moved the wiring algorithm from WireScaleFreeBA to GraphFactory
and added the possibility to generate a directed version.
Now, the "undirected" config parameter has to be given to get
an unirected graph. This breaks backwards compatibility, but I prefer
to have a consistent set of parameters for the wiring classes.
Also, some pretty printing changes on some wiring classes.
AM 19/01/2005
- Fixed a bug in ClassFinder, that was preventing it to run on
Windows.
- Added a mechanism for running a class that implements both
the CDProtocol and EDProtocol interface just as an EDProtocol.
- Now the prototype node has an index of -1 (to avoid confusion
with node with index 0)
MJ 09/01/2005
- Fixed a bug in PeakDistribution: it did not initialize as many nodes
as the number of peaks. Eg with one peak, one node is not initialized.
MJ 06/01/2005
VERSION 0.3 RELEASED
------------------------------------------------------------------
------------------------------------------------------------------
MJ 04/01/2005
- Minor changes to make some docs consistent with actual behavior and
vice versa
AM 02/01/2005
- Added the "pack" parameter (originally included in WireRegularRandom)
to all the Wire* classes. When this parameter is present, the pack()
method is called over the initialized protocol after all links have
been wired.
MJ 02/01/2005
- Fixed bug in WireScaleFreeBA: it ocasionally generated loop edges and in
general did not follow the BA model.
AM 30/12/2004
- Modified Makefile to remove "distributions" from the list of
packages that are inserted in the distribution.
AM 30/12/2004
- Modified aggregation to use to the new vector package. All the
implementation now use double instead of float.
MJ 30/12/2004
- Refactoring of classes that have to do with vector-like operations
on an array of values, where each element of the array is stored
by an instance of a SingleValue protocol. A new package called
peersim.vector was created and everything is moved there.
- New classes dealing with vectors (see above) are added such as
observers and dynamics, into package peersim.vector.
MJ 27/12/2004
- Changed print in IncrementalFreq to print only those lines that have
non-zero frequency. Thanks to Spyros Voulgaris for pointing out the
problem.
- Some minor refactoring and docs enhancement.
GJ 19/12/2004
- Fixed a Scamp cast bug in order to compile on JDK 1.5 .
MJ 16/12/2004
- Fixed docs bug in FastConfig, thanks to Spyros Voulgaris, and added
hasLinkable.
GJ 15/12/2004
- Added ExtendedRandom class to support power-law distribution generation
(thanks to Simon Patarin for this code).
- Updated CommonRandom class: now uses the an ExtendedRandom object.
AM 25/11/2004
- Changed the implementation of the Event-driven simulator in order to
support 64 bits for time. Part of these bits (by default: 8) are used
to discriminate between events that occur at the same time.
- Added getCycle and getTime methods to CommonState. getCycle() is just
new version of getT, which is now deprecated. getTime() returns the
current time in event-based simulations, and the current cycle in
cycle-based ones.
- Modified all the peersim observers and dynamics that uses time, that
now use getTime instead of getCycle. In this way, they are compatible
with both ed and cd simulations.
JM 17/11/2004
- Small non-critical changes like docs, packet texts, formatting, etc, plus
changes step to cstep in DaemonProtocol to avoid conflict with scheduling
GJ 11/11/2004
- Refactored aggregation and load balancing example code: now they use
distribution.SingleValueHolder class and peersim.core.SingleValue interface
instead of example.aggregation.AbstractFunction and
example.aggregation.Aggregation interface.
- example.aggregation.AbstractFunction class and
example.aggregation.Aggregationinterface removed to avoid code replication.
JM 9/11/2004
- removed Protocols, added peersim.config.FastConfig instead. The new feature
is that FastConfig is automatic, it reads and stores "linkable" config lines
in a transparent fashion to the protocols.
- toString method to SingleValueHolder, and made value protected
- stripped Node interface to those methods that were actually used
JM 9/11/2004
- added nextLong(long) to CommonRandom
AM 6/11/2004
- added event-based simulator in package peersim.edsim
- added transport protocols in package peersim.transport
- added class peersim.Simulator to serve as the new entry point to peersim.
It looks at the configuration and launches the right simulator. Check
the classdocs of peersim.Simulator.
MJ 3/11/2004:
VERSION 0.2 RELEASED
------------------------------------------------------------------
------------------------------------------------------------------
GJ 3/11/2004
- Added MedianStats class. It extracts the median value from a data collection;
it subclasses the IncrementalStats class.
MJ 2/11/2004
- changed config parameter name "protocolID" to "protocol" in package
distributions. Protocol id is an internal concept now, transparent to the
user and protocol name should be used (which can also be a number of course).
MJ 29/10/2004
- new constructor parameter for OverlayGraph so that setEdge could work in
an undirected manner (sets opposite edge too). OverlayGraph is interpreted as
directed, nontheless, because setEdge is not the only way to set edges.
- wireRegularRandom has new config parameter "undirected", which uses the
feature above
- new toString to IdleProtocol,
MJ 25/10/2004
- added method lookupPid to Configuration to make it possible to search
for a protocol id based on the protocol name
MJ 22/10/2004
- added the possibility of excluding entities that are present in the config
using a simple config parameter: eg "include observer aa bb 23". This
works exactly like the order feature only those names that are not listed
are excluded. [see classdoc of Configuration]
- some more minor refactoring of Simulator and OrderSimulator
MJ 21/10/2004
- some refactoring of the most recent changes for simplification and
clarification and which include
- moving order-handling into Configuration and so removing it from the
rest of the code: now ordering is transparent to Simulator.
- removing setPid from Configuration and funtionality to assign ID-s to
protocols names is also moved into Configuration completely. The rest of