forked from NetCal/DNC
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Changelog.txt
545 lines (502 loc) · 34.5 KB
/
Changelog.txt
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
DNC v2.8.1 (2022-Aug-09)
------------------------
* Implementation of a grid search-based FIFO analysis called GS. Details:
Alexander Scheffler, Steffen Bondorf and Jens Schmitt.
Analyzing FIFO-Multiplexing Tandems with Network Calculus and a Tailored Grid Search (Short Paper).
In Proc. of the 34th International Teletraffic Congress (ITC), September 2022.
* Instructions on how to use the DNC with the IntelliJ IDE
* Nesting trees will no longer have empty nodes
DNC v2.8.0 (2022-May-10)
------------------------
* Implementation of search-based FIFO analyses for feedforward networks. Details:
Alexander Scheffler, Jens Schmitt and Steffen Bondorf.
Searching for Upper Delay Bounds in FIFO Multiplexing Feedforward Networks.
In Proc. of the 30th Conference on Real-Time Networks and Systems (RTNS 2022), June 2022.
* Return Infinite Delay Bounds for overloaded servers in the SFA-FIFO analysis
* Fix saving a server graph
* Fix rtc.jar download link
* Fix getXIntersection for curves more complex than TB, RL
* Various minor improvements
DNC v2.7.0 (2021-Nov-08)
------------------------
* Implementation of LUDB for feedforward network analysis. Details:
Alexander Scheffler and Steffen Bondorf.
Network Calculus for Bounding Delays in Feedforward Networks of FIFO Queueing Systems.
In Proc. of the 18th Conference on Quantitative Evaluation of Systems (QEST), August 2021.
DNC v2.6.3 (2021-Nov-05)
------------------------
* A PMOOA left-over service curve computation tailored to the affine curves.
* New FIFO left over service curve method for flexible theta.
* Fix SFA backtracking under FIFO assumption.
* Curve operation optimizations and fixes (f_inv, getSegmentFirstAtValue, beautify, convolution, deconvolution, delay and output bound methods).
DNC v2.6.2 (2020-Sep-04)
------------------------
Fixing the backlog bound computation (order of input parameters got reversed in the last release, sorry about that).
That was not caught by the functional tests, leading to the suspicion that there might be a problem with them, too.
DNC v2.6.1 (2020-May-11)
------------------------
* New networkmodel submodules and converter by @matyesz
* hashCode improvements by @davidalain
* GetFlowsByPath in the server graph by @alexscheffler
* Improved curve interfaces, factories, utilities structure by @sbondorf
* Clarifications regarding contribution, copyright and licensing
* Various minor cleanups. code deduplications, docs improvements, fixes etc.
DNC v2.6.0 (2019-Jun-17)
------------------------
* Added the Arrival Bounds Cache.
* Added the Unique Linear Program (ULP) analysis.
* Modularized Bound Computation backend.
* Rename Analysis* to TandemAnalysis* (see Github issue #76 for background).
DNC v2.5.2 (2019-May-11)
------------------------
* The NetCal Num Backend is now in the Maven Central Repository, not bundled anymore.
* The Analysis interface lists all methods found in AbstractAnalysis.
* Server backlog cap for output burstiness implementation only works for affine curves and PBOO.
It now verbosely states this in case of an incompatible analysis configuration.
* Other small cleanups in various places, updated submodules.
DNC v2.5.1 (2019-Mar-29)
------------------------
* Removal of duplicate arrival bounds was replaced with their convolution.
* Maven can now run the functional tests properly.
* Simplifications of the affine curve code to make use of the shape assumptions.
* Move configuration flag for checks to where they belong (specific algebra, bounds, or curves implementation).
* The Readme was updated. It provides the minimal steps to set up Eclipse for development.
* Various small typo fixes, dependency updates, infrastructure updates.
Changes in the NetworkCalculus.org DNC v2.5.0 (2019-Jan-29)
-----------------------------------------------------------
Rebranding to NetworkCalculus.org DNC
- Packages are prefixed org.networkcalculus.dnc.
- Repository names/prefixes were reduced to DNC.
Refactoring:
* There is now a highest-level Calculator class instead of CalculatorConfig for configurations that cannot be changed at runtime.
- It also hold a member variable for the algebraic DNC backend and we included presets for using either affine or piecewise affine curves.
* We moved and renamed many classes to better reflect the current state of DNC.
- "dnc", when not used in "discodnc", was renamed to "disco" to better reflect the code's origin.
- The package "minplus" was renamed to the more general "algebra" and disco's implementations for affine an piecewise affine curves were split up.
- The packages of in network were moved to network.server_graph and renamed to clarify that we work wit the turn model, not the big switch model
- Network was renamed to ServerGraph, NetworkFactory to ServerGraphFactory, Link to Turn.
- Package "nc" was split up and renamed to feedforward, tandem and sinktree, respectively. Class naming was improved to catch up with DNC theory.
- PbooArrivalBound_Concatenation -> AggregatePboo_Concatenation, PbooArrivalBound_PerHop -> AggregatePboo_PerServer
- PmooArrivalBound -> AggregatePmoo
- TandemMatchingArrivalBound -> AggregateTandemMatching
- PmooArrivalBound_SinkTreeTbRl -> SinkTree_AffineCurves
- Gamma -- the Maximum Service Curve
- Renamed to (variations of) MaxSC and MaxScRate.
- Global use of either is now called enforcement as it overrides the server-local setting correctly.
- Multiplexing: Clarified naming of the multiplexing discipline and globally enforced behavior.
* Code paths for affine and piecewise affine curves were better separated.
* Functional tests, experiments and MPA RTC curve backend moved into git submodules.
Other changes and additions:
* Major overhaul of our pom.xml Maven build configuration.
- The mpa rtc jar will be automatically downloaded and unpacked.
* ArrivalCurve createUnboundedArrivals() is now ArrivalCurve createInfiniteArrivals().
* Left-over Service: the indeterminate form resulting from subtracting infinite arrivals from infinite service will return zero service.
* Improvements, fixes and documentation improvements.
v2.4.4 "Chimera" (2018-Oct-16)
------------------------------
* Num interface and its implementations:
- Major code refactoring and cleanup.
- Epsilons (for rounding purposes) are no longer included.
- Code trying to consider the machine epsilon in every operation was removed after a thorough review revealed bugs.
* Functional tests:
- Test results now also hold the required epsilons for individual test cases.
* PwAffine Curves and implementations:
- Refactored code handling discontinuities (used with token bucket arrival curves).
- No usage of a machine epsilon required anymore.
* Convolution: Replace cast from ServiceCurve to Curve by creating a proper ArrivalCurve for unbounded arrivals.
* Performance improvement for getSourceFlowArrivalCurve in case there is only a single such flow.
* Remove unnecessary cast from Num to Num when bounding backlogs.
* Code cleanups.
v2.4.3 "Chimera" (2018-Aug-03)
------------------------------
* Fixed Bug #31: Computation of infinite output bound due to stability constraint violation.
* Improved shifting of curves (horizontal and vertical).
* SFA tandem analysis: Shortcut in case there is no interference by other flows.
* Comment cleanups and improvements.
v2.4.2 "Chimera" (2018-Jul-04)
------------------------------
* Tandem Matching Analysis and Arrival Bound added
* SFA and PbooArrivalBounds:
- Improved structure, reliability and performance.
- Single, static SFA tandem analysis for SFA and PBOO ABs.
* Rational Num implementations gained a getValue function returning a new instance of the Math3 object in their backend.
* Minor Javadocs and comment improvements.
v2.4.1 "Chimera" (2018-May-07)
------------------------------
* Tests
- They now correctly consider the configures Curve and Num implementation (GitHub Issue #1).
- Each test only works with a single instance of its respective network instead of creating one per test config.
- We use external method sources to not forcibly change configs to comply with PMOO's restriction to arbitrary multiplexing.
- Expected test results are were moved to separate classes.
* Added a class with presets with most common flow of interest analysis and arrival bounding configurations
for algebraic compositional feed-forward analysis (compFFA): de.uni_kl.cs.discodnc.nc.CompFFApresets.
- Demo4 uses the presets instead of analyses instances implicitly using the defailt configuration.
* Our current TFA AB burst reduction implementation is only applicable to TB arrivals.
- We now skip reducing the reduction for arrival curves with >2 segments.
* Network: You can now get a flow by its ID.
* SeparateFlowAnalysis: Do not rely on an exception to identify path's source server.
* Improved pom.xml.
* Code and comment cleanups.
- Rename location of interference, loi, to server of interference, soi, to prevent confusion with potential link of interference.
v2.4.0 "Chimera" (2018-Mar-18)
------------------------------
* Maven build system
- Reworked the source folders to src/main/java and src/test/java.
- Added pom.xml
- Attention: You need to add the MPA toolbox manually:
- download it RTCToolbox_bin.zip at http://www.mpa.ethz.ch/Rtctoolbox/Download
- unzip it, and put the file RTCToolbox/rtc/rtc.jar into the DiscoDNC's lib folder.
- Removed Ant files
* New domain discodnc.cs.uni-kl.de
- Includes a new webpage.
- Package prefixes have been renamed to de.uni_kl.cs.discondc.
* All the changes of betas 1 to 4.
- Attention: Although all tests succeed with the rtc curve backend, it is considered a beta feature.
* Static analysis update: switched from obsolete FindBugs to its successor SpotBugs.
- Fixed EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS in LinearSegment_MPARTC_PwAffine.
- Fixed RV_RETURN_VALUE_IGNORED_BAD_PRACTICE in Network.
* Reworked storing a network to the file system.
* Removed broken OutputTest.
* Code cleanups.
- Moved preliminary code to dispatch to different DNC bounding implementations to comments.
v2.4.0beta4 "Chimera" (2017-Dec-23)
-----------------------------------
* Attention: The DiscoDNC does not yet fully work with Java 9. Compiler compliance level 1.8 is required.
- Thanks to Zoltán Mátyás for pointing this out.
* Tests are all ported to JUnit5.
* Check the classpath for rtc.jar instead of using a hardcoded location (patch by Zoltán Mátyás).
* DNC bounds derived from two curves (i.e., other than arrival bound algorithms)
- package renamed from de.uni_kl.cs.disco.nc.operations to de.uni_kl.cs.disco.nc.bounds
- Computations (Backlog, Delay, LeftOverService and Output) are called via a dispatcher, Bound.java.
- Name simplifications: drop "Bound" suffix for Backlog, Delay, and Output classes.
* Method cleanups in curve classes. Code improvements apply to the DNC implementation:
- Renamed auto-generated method names that started with "isIs" or "isHas" and removed underscores from these method names.
- Rate latencies: merged getRL_Property() into isRateLateny(); renamed setRL_Property() to setRateLateny().
- Token buckets: merged getTB_Property() into isTokenBucket(); renamed setTB_Property() to setTokenBucket().
- getDelayedInfiniteBurst_Property renamed to isDelayedInfiniteBurst.
- Merged getTB_Burst into getBurst.
- Created a rate-latency optimized code path for getLatenty(), similar to getBurst().
* Comments and JavaDocs cleanups, various stability and performance improvements.
v2.4.0beta3 "Chimera" (2017-Sep-01)
-----------------------------------
Simplifications to the code structure for streamlined use. This work requires Java 8+ as it relies on static methods in interfaces.
* CalculatorConfig singleton: fix execution of all tests, run time back to previous level.
* Split Analysis.java into three parts:
- The Analysis interface that also provides static methods for simple execution of analyses.
- The abstract class AbstractAnalysis holds member variables for the network, the configurations and the results.
All analyses in de.uni_kl.cs.disco.nc.analyses extend AbstractAnalysis and implement Analysis.
* Split ArrivalBound.java into three parts:
- The minimal ArrivalBound interface.
- The abstract class ArrivalBoundDispatch that applies the configured arrival boundings.
- The abstract class AbstractArrivalBound holds member variables for the network and the configurations.
All arrival bounds in de.uni_kl.cs.disco.nc.arrivalbounds extend AbstractArrivalBound, all but the sink-tree version also implement ArrivalBound.
- Reworked the arrival bound dispatcher to reuse a single object per arrival bound alternative instead of creating a new one for every call.
* Merge Interface, Factory and Utils classes where possible:
- CurvePwAffine, incl. DNC and MPA_RTC Curves.
- LinearSegments.
- Num and all its implementations.
* Disco (min,+)-algebraic operations:
- Moved to new package de.uni_kl.cs.disco.minplus.dnc
- All convolutions and deconvolutions are called via a dispatcher, MinPlusDispatch.java.
- Extension to manipulate MPA RTC curves with their native operations is not yet tested.
* CurvePwAffineUtilsDispatch was not a dispatcher but an utils class:
- Renamed to CurvePwAffineUtils.
- Made it an abstract class.
* LinearSegmentFactoryDispatch is not dispatching but a factory itself; renamed to LinearSegmentFactory.
* Merge of MinPlusInputChecks and MinPlusDispatch to MinPlus.
v2.4.0beta2 "Chimera" (2017-Aug-17)
-----------------------------------
* Interface and Dispatcher naming: interfaces do not have a suffix, dispatchers now suffixed with "Dispatch".
- CurvePwAffineFactory renamed to CurvePwAffineFactoryDispatch
- CurvePwAffineFactoryInterface renamed to CurvePwAffineFactory
- CurvePwAffineUtils renamed to CurvePwAffineUtilsDispatch
- LinearSegmentFactory renamed to LinearSegmentFactoryDispatch
- NumFactory renamed to NumFactoryDispatch
- NumFactoryInterface renamed to NumFactory
- NumUtils renamed to NumUtilsDispatch
- NumUtilsInterface renamed to NumUtils
* Dispatch classes are all abstract now.
* Renamed OperatorInputChecks to MinPlusInputChecks.
* Made LinearSegmentUtils an abstract class (it only provides static methods).
* Reworked CalculatorConfig.java to singleton pattern (improves tests run time considerably).
v2.4.0beta1 "Chimera" (2017-Aug-02)
-----------------------------------
* An alternative curve backend for the DiscoDNC analyses:
This release wraps the MPA RTC Toolbox's curve implementation to be used with the DiscoDNC. It continues the work presented at ECRTS 2017:
Philipp Schon and Steffen Bondorf, Towards Unified Tool Support for Real-time Calculus & Deterministic Network Calculus.
The required MPA RTC library is available at www.mpa.ethz.ch/Rtctoolbox/
* Package naming now complies with the Java rules. Our domain disco.cs.uni-kl.de translates to the package prefix de.uni_kl.cs.disco.
v2.3.5 "Centaur" (2017-Jun-25)
------------------------------
* Network.java:
- Reduced amount of arrival curve copies.
- SaveAs won't fail if the directory already exists.
* AnalysisResult.java:
- Reduced visibility of delay and backlog bound variables from public to protected.
- Get methods are public, set are protected (and overwritten by extending classes) so they are only accessed by the respective analysis.
* OutputTest.java: Catch and print potential exceptions thrown when loading and instantiating the just compiled test network class.
* Test documentation 2.0beta2
- Update to new file naming scheme (see v2.3.3 changes).
- Sources: LyX files updated to version 508 (requires LyX 2.2+).
v2.3.4 "Centaur" (2017-May-19)
------------------------------
* Added Flow Prolongation to the PMOO Analysis (but not the functional tests). See:
Better Bounds by Worse Assumptions – Improving Network Calculus Accuracy by Adding Pessimism to the Network Model
(Steffen Bondorf), In Proceedings of the IEEE International Conference on Communications (ICC 2017), May 2017.
* DncTestResults: Added missing copyright header.
v2.3.3 "Centaur" (2017-Apr-22)
------------------------------
* Analysis Result: Removed obsolete flag "succeeded".
* Enum Multiplexing was moved from Server to AnalysisConfig.
* InNetwork was renamed to NetworkFactory as well as extended for this purpose.
* Convolution.java, convolve_SC_SC_RLs: Fix for the case that two rate-latency service curves should be convolved, yet, two null objects are given.
* FunctionalTests, renamed to DncTests:
- New naming scheme including more information.
- Separated networks from the tests and expected results.
- Reduced complexity of individual tests classes by moving code to the super class DncTest.
- Replaced System.out.println( e.toString() ) with e.printStackTrace().
- Converted the output test to a JUnit test automatically compiling the generated class.
- Performance improvements.
v2.3.2 "Centaur" (2017-Mar-13)
------------------------------
* Advanced the structure of package unikl.disco.nc (sub-)packages for analyses, arrivalBounds and operations.
* OutputBound.java: New class in unikl.disco.nc.operations providing the DNC output bound computation (reduces code duplication).
* LeftOverService: A generic compute(...) method dispatches according to the analysis configuratoin's multiplexing flag. Used in SFA and PbooAB.
* Fix: PBOO Arrival Bounding with per-hop left-over service now uses each server's max SC instead of an overly pessimistic entire common path's one.
* Fix: PMOO Arrival Bounding's shortcut for single-hop subpaths was actually dead code before.
* Added findbugs library.
v2.3.1 "Centaur" (2017-Feb-28)
------------------------------
* Evolved the factory pattern for Num implementations to a (kind of) abstract factory pattern for simplified code and improved extensibility.
* Package minplus: Improved stability by handling distorted input (null or empty sets).
* Deconvolution: Renamed private method deconvolveGeneric to deconvolve_mTB_mRL to better reflect its capabilities.
v2.3.0 "Centaur" (2017-Jan-11)
------------------------------
* Rework of the number abstraction layer in unikl.disco.numbers:
The DiscoDNC is now built on a factory pattern with four implementations -- the lower body and the four legs of our new Centaur release.
- Num.java is now an interface to be implemented by the actual number representations in unikl.disco.numbers.implementations.
- NumFactory.java provides methods to create a number, takes care of the representation given in the CalculatorConfig.
- NumUtils.java provides methods to work with objects implementing the Num interface.
- unikl.disco.numbers.implementations provides four implementations:
- Real numbers with single precision or double precision.
- Both provide a flag to account for potential rounding errors when comparing numbers (comparison_epsilon).
- Rational numbers based on Integer or BigInteger (requires Apache Commons Math 3 and special values in unikl.disco.numbers.values).
* Convolution.java: Improvements for convolution involving \delta_T.
* Functional Tests: Further streamlined test configuration generation.
* Curve.java: isBurstDelay() was removed, functionality is provided by isDelayedInfiniteBurst() since version 2.2.7.
* Network.java: Fixed getting a server by its ID (had an offset of +1 before).
* Removed methods that were deprecated in v2.2.
* Path.java: Renamed createNullPath to createEmptyPath.
* Updated the output tests (also serves as the demo for saving a network and reusing it).
* Better distinction between number zero and null objects:
- Renamed *null{Segment,Curve,ArrivalCurve,ServiceCurve,MaxServiceCurve}* to *zero{Segment,Curve,ArrivalCurve,ServiceCurve,MaxServiceCurve} *
- Convolution of an arrival curve with a null object now returns the arrival curve instead of a zeroArrival curve.
* CalculatorConfig.java: NUM_CLASS is now only accessible via get and set.
* Various fixes , performance improvements (e.g., suggested by Coverity Scan and FindBugs), reduced code duplication, improved parameter naming, etc.
v2.2.8 "Heavy Ion" (2016-Dec-06)
--------------------------------
* Fixed bugs concerning the delay and backlog bounding with \delta_T, T>0, service curves (delayed infinite burst).
* Improved JavaDocs for use_gamma and use_extra_gamma
Thanks to Mathias Kreider from the GSI Helmholtz Centre for Heavy Ion Research for reporting these bugs. This release was code named "Heavy Ion".
v2.2.7 "Hydra" (2016-Nov-17)
----------------------------
* Fixed a bug when convolving \delta_T with T>0 (delayed infinite burst).
* Curve.java:
- is_zero_delay_infinite_burst was replaced by the more general is_delayed_infinite_burst.
- Visibility was restricted, reading the value is enabled by isDelayedInfiniteBurst().
* LinearSegment.java: Constructors that accept primitive double arguments were added.
* FunctionalTests:
- Streamlined test config generation.
- assertEquals based on double values now considers the internal number representation's rounding error safety margin epsilon.
v2.2.6 "Hydra" (2016-Mar-31)
----------------------------
* Added the arrival bound burstiness reduction of the MMB & DFT 2016 paper
"Improving Cross-Traffic Bounds in Feed-Forward Networks - There is a Job for Everyone".
It can be switched on in the analysis configuration by setting the flag ab_consider_tfa_nodeBacklog to true.
* Apache Commons Math version updated to 3.6.1.
v2.2.5 "Hydra" (2015-Sep-29)
----------------------------
* Fixed deconvolution for delivering too optimistic results for some combinations of multi token buckets and multi rate latencies. Remember: The DiscoDNC is only tested for token-bucket arrivals and rate-latency service. Any other offering will is best effort. Please report encountered bugs.
* Curves: Creating a curve with specified segments count: All but the first segment will be leftopen.
* Changed constructor visibility in NumDouble from protected to public.
* Demo4: Removed unused server and link.
v2.2.4 "Hydra" (2015-Aug-15)
----------------------------
* ArrivalCurve: Performance improvement computing an arrival curve's burst.
* Network: Increased robustness against potential null pointers.
* JavaDocs cleanup: Existing documentation can now be compiled without any warnings or errors.
* Curve.java: Unified function names: {create,initialize}BurstDelay renamed to {create,initialize}DelayedInfiniteBurst.
* Curve.java: Reduced code duplication.
* Curves: Deprecated unused functions for later removal and easier maintenance.
* Ant build script to generate the DiscoDNC library.
* Minor cleanups, better variable naming and other improvements.
v2.2.3 "Hydra" (2015-Jul-11)
----------------------------
* Removal of the arrival bounding with the output arrival curve (PbooArrivalBound_Output_PerHop). Besides being deprecated since v2.0.0, it was broken by now.
* The rejoining flows fix has been improved.
* AnalysisResults classes used for internal storage of results have been moved into Analysis.java.
* Analysis.java now offers convenient static methods to start an analysis that return an object of the respective analysis.
* Minor improvements to comments.
* Functional Test Documentation: Layout bug in FeedForward.pdf fixed.
v2.2.2 "Hydra" (2015-Jul-02)
----------------------------
* Bugfix: Arrival bounding of flows at the servers they rejoin the flow of interest was fixed.
* NumDouble: Improved stability by catching double rounding error preventing a subtraction to result in exactly 0.
* PmooAnalysis: Improved checking the stability constraint and returning a null service curve if violated. Thanks to Paul Nikolaus for pointing out potential problems with the previous version.
* Convolution: Added a shortcut for the case that at least one of the service curves to convolve is zero.
* Curve.getTBBurst() now correctly handles rate functions.
* Network: Stability improvements.
* Demos: Code cleanups and simplifications.
* Functional tests: FeedForward test documentation was updated to version 2.0beta.
v2.2.1 "Hydra" (2015-Jun-15)
----------------------------
* Bugfix: Deconvolution with the zero delay, infinite burst-service curve (delta_0) always yielded delta_0 as result. Thanks to Fabien Geyer for discovering this bug.
* Added functions de-/convolving sets of curves.
* Improved saving of large networks (see unikl.disco.tests.output.TestNetwork):
- Functions creating serves, links and flows have been split up to be smaller than 65536 bytes.
- Remaining problem for large networks: Constant pool (i.e., total amount of servers, links, flows) exceeding 65536 entries results in a failure.
* Minor clean ups and efficiency improvements.
v2.2.0 "Hydra" (2015-May-15)
----------------------------
* This is the first version checked with Coverity Scan (incl. FindBugs). We fixed all the uncovered performance issues and now pass the checks with 0 defects.
* Reworked the Num classes in order to allow switching the number representation with a flag in CalculatorConfig (see below):
- Num is now an abstract class that coordinates creation of and calls to the right number representation.
* CalculatorConfig: New flag NUM_CLASS to set the internal number representation:
- Replaces previous need to copy the respective classes content of Num.
- Be careful: Switching the number representation while the calculator is running will result in casting exceptions!
* Package structure: All number related classes have been moved to unikl.disco.numbers.
* Num_Fraction:
- Adapted structure to Num_double, i.e., it now holds a Fraction object instead of extending Fraction.
- Check for special value representation (infinity, NaN) is now done once at creation time instead of on demand before every operation.
- Rewrote some operators to use Fraction's functionality more.
* Functional tests now run with both number classes each.
* unikl.disco.network.*: Reworked the to*String methods to remove dependency on the static calculator configuration.
* Dependencies:
- Java 8 is now strictly required: We call static hash code functionality on Double, Boolean, and maybe others.
- Apache Commons Math:
- Update of bundled version to 3.5.
- It is not a hard dependency anymore.
- hamcrest-core 1.3 was updated to java-hamcrest 2.0.0.0.
* Bugfix in PmooArrivalBound's shortcut for cross-traffic tandems of a single hop (not spotted by functional tests).
* Bugfix in Network's createPath for single hop paths.
* Bugfix for per-flow arrival boundings restoring tightness of results (correctness was not compromised).
* Various performance and stability improvements.
v2.1.1 "Hydra" (2015-Mar-23)
----------------------------
* Network:
- Version in SaveAs output changed to 2.1.
- Added numLinks() and numFlows().
- Added a copy() function returning a deep copy.
* Analysis classes:
- getServerAlphasMapString() returns readable version of the map.
- TbRl specific de-/convolution setting is now taken into account correctly.
- Rework to use a results object internally.
* Arrival bounding:
- In case of no left-over service, a zero delay infinite burst arrival curve will be returned instead of raising an exception.
- Improved sanity checks.
- TbRl specific de-/convolution setting is now taken into account correctly.
- Sub-classes of ArrivalBound do not call its static functions anymore.
* Deconvolution: Removed unused functions.
* Functional tests: Test names now include the test configuration, i.e., the output of FunctionalTestConfig's toString().
* Dependencies: Apache Commons Math as now a hard dependency.
* Obsolete class unikl.disco.nc.Configuration was removed.
* Various minor improvements.
v2.1.0 "Hydra" (2015-Feb-25)
----------------------------
* Notable API break (non-exhaustive list)
- performAnalysisOnPath, performEnd2EndAnalysis -> performAnalysis (path determined by input parameters)
- createBurstDelay -> createDelayedInfiniteBurst, createZeroDelayBurst -> createZeroDelayInfiniteBurst
* INFOCOM 2015 SensorNC paper results
- Efficient PMOO cross-traffic arrival bounds in sink trees with token bucket arrivals and rate-latency service curves.
* Configuring the calculator has been reworked
- AnalysisConfig holds all parameters relevant to an analysis and its arrival bounding. It is instantiated and handed to the analysis.
- CalculatorConfig holds static flags for enabling internal checks during the computation etc.
- FunctionalTestConfig extends AnalysisConfig by additional parameters tested.
* New class for almost concave maximum service curves (MaxServiceCurve).
* Network: Improved saving of big networks. Previously the output easily exceeded Java's 64KB method size limit.
- SaveAs and toString now produce different outputs: reusable code and simple string representation.
- The code output of SaveAs now produces distinct methods for adding servers, links, and flows to the network.
- toString methods of network components was also improved.
- Added a test package with three simple classes for the new saving code.
* Curve: Removed unused methods.
* Functional Tests:
- Removed maximum service curve. Neither is it included in the documentation not did it have any influence.
- Removed tests including deprecated PbooArrivalBound_Output_PerHop.
- Streamlined tests and remove code duplication.
- Increased test coverage to include BacklogBound.derivePmooSinkTreeTbRl where applicable.
- Total amount of tests is now at 21120.
* SeparateFlowAnalysis, PmooAnalysis: The end-to-end service curve now be computed for a given aggregate of flows.
* Various minor improvements.
v2.0.4 "Hydra" (2015-Jan-30)
----------------------------
* Server: Replaced boolean-based multiplexing definition with an enum.
* LeftOverService, bounds: Fixed derivations with zero delay, infinite burst service curves.
* Functional tests:
- Improved the structure.
- Extended tests to consider both multiplexing settings, globally defined and server locally defined.
* Configuration: defaultArrivalBoundMethods() now correctly sets the arrival_bounding to PBOO_CONCATENATION instead of PBOO_PER_HOP.
* Streamlined sanity checks in LeftOverSerice's fifoMux(...) and Deconvolution's deconvolve(...).
* Demos: Extended output to match the more comprehensive one or the functional tests.
* JavaDocs
- Added documentation to Network and Path about their interpretation and the behavior of analyses using them.
- Minor clarifications in other parts.
* Test documentation: Fixed layout of Tree.pdf such that everything is visible again.
* Updated bundled libraries:
- Apache Commons Math version updated to 3.4.1.
- JUnit version 4.12.
v2.0.3 "Hydra" (2014-Dec-30)
----------------------------
* Curve, LinearSegment: Moved static methods working on linear segments from Curve to LinearSegment.
* Num, Num_double, Functional tests:
- Account for rounding errors when using the double based number representation.
- Functional tests now also succeed with the double number representation.
- Changed the default number representation to doubles.
* Functional tests:
- Make console output optional.
- Minor code rework, unified variable naming.
* ArrivalBound:
- Improvements to make the class static.
- Reduced overhead in case there's only a single arrival bounding method configured.
* Network:
- Add missing addServer method with signature ( String alias, ServiceCurve service_curve, boolean arbitrary_mux, boolean use_gamma, boolean use_extra_gamma ).
- Reduced amount of internal copies of parameters.
* PMOO-AB, PBOO_Concat-AB, PBOO_PerHop-AB: Throw Exception if there's no service left during arrival bounding.
* PMOO-AB: Shortcut for PMOO left-over service curve derivation if the path only consists of a single server.
* PBOO-OutputBound-AB, Configuration, Tests: Pushed deprecation of PbooArrivalBound_Output_PerHop by moving its rec/iter-configuration option from Configuration to the class itself.
* Test documentation:
- Update naming scheme to match latest publications (prev. nomenclature).
- Documentation files contain a version number and possibly a changelog and acknowledgements.
- Started adapting PMOO's T^{l.o.} computation to be closer to the code (only in FeedForward as of now).
- Minor fixes in the single server documentation.
* Apache Commons Math: Updated bundled version to 3.4.
v2.0.2 "Hydra" (2014-Nov-19)
----------------------------
* New feature: Network configurations can now be saved in a format that allows for reuse:
- Curves, LinearSegment, Num: Added constructors parsing a string representation of curves.
- Curves, Num_double: Reduced code duplication.
- Path: Changed visibility of constructor Path( Server single_hop ) to public (see comment there for reasoning).
- Network: Improved creation of paths from lists of servers or links, saving functionality.
* Arrival bounds: Removed duplicate local variables.
* Functional tests:
- Extended functional tests to check for unexpected exceptions.
- Moved remaining static configuration options to FunctionalTests to reduce code duplication.
* Curve: Improved decomposition of curves into rate latencies or token buckets for PMOO.
* ServiceCurve: Removed effectively dead sanity check.
* Minor improvements of the documentation and naming of internal variables.
v2.0.1 "Hydra" (2014-Oct-16)
----------------------------
* Bugfix in ArrivalBound. Removed bad sanity checks always resulting in false.
* Server, Flow: Removed internal ID from string output.
* Flow: Removed unnecessary throws declaration from getServersOnPath(), string representation does not convert alias to lower case anymore.
* Path: Cleaned up usage of LinkedList instead of List, removed “throws Exception” from constructors.
* Network: Reworked toString to produce pseudo-code close to the creation of a network, renamed parameter in getFlowsPerServer and getFlowsPerSubPath to use application-agnostic vocabulary.
* LinearSegment, curves: Added toString() method to LinearSegment and call it from when converting curves to strings rather than using internal conversion code, reduced code duplication across the toString() methods.
* Curve: Added a patch to the shiftRight-method to handle rounding errors with the double-based number representation that can lead to violating the f(0)=0 requirement.
* Configuration: Consistent naming (defaultArrivalBoundCalculations -> defaultArrivalBoundMethods), Changed default arrival boding method from PBOO_PER_HOP to PBOO_CONCATENATION.
* Demos: Made sure all intermediate results will be printed with information about which server they belong to (TFA, SFA), renamed instances of the analyses to match functional tests (sf -> sfa and tf -> tfa).
* Functional tests: Completed combinations of code paths that can be tested and reduced code duplication while doing so. The number of functional tests increased from 1800 to 8200.
* Apache Commons Math: Updated bundled version to 3.3.
* Minor improvements of the documentation and naming of internal variables.
v2.0.0 "Hydra" (2014-Oct-02)
----------------------------
Please see http://disco.cs.uni-kl.de/index.php/88-projects/169-discodnc-20-dev