Loading src/simap_connector/service/simap_updater/SimapUpdater.py +3 −0 Original line number Diff line number Diff line Loading @@ -346,6 +346,8 @@ class EventDispatcher(BaseEventDispatcher): period_scale = 86_400, offset_scale = 50, noise_ratio = 0.05, min_value = 0.0, max_value = 100.0, ), latency_sampler=SyntheticSampler.create_random( amplitude_scale = 0.5, Loading @@ -353,6 +355,7 @@ class EventDispatcher(BaseEventDispatcher): period_scale = 60.0, offset_scale = 10.0, noise_ratio = 0.05, min_value = 0.0, ), related_service_ids=[], )) Loading src/simap_connector/service/telemetry/worker/data/SyntheticSamplers.py +18 −10 Original line number Diff line number Diff line Loading @@ -13,31 +13,36 @@ # limitations under the License. import math, random, threading from dataclasses import dataclass import math, random, sys, threading from dataclasses import dataclass, field from datetime import datetime from typing import Dict from typing import Dict, Optional from .Sample import Sample @dataclass class SyntheticSampler: amplitude : float = 0.0 phase : float = 0.0 period : float = 1.0 offset : float = 0.0 noise_ratio : float = 0.0 amplitude : float = field(default=0.0) phase : float = field(default=0.0) period : float = field(default=1.0) offset : float = field(default=0.0) noise_ratio : float = field(default=0.0) min_value : float = field(default=-sys.float_info.max) max_value : float = field(default=sys.float_info.max) @classmethod def create_random( cls, amplitude_scale : float, phase_scale : float, period_scale : float, offset_scale : float, noise_ratio : float offset_scale : float, noise_ratio : float, min_value : Optional[float] = None, max_value : Optional[float] = None ) -> 'SyntheticSampler': amplitude = amplitude_scale * random.random() phase = phase_scale * random.random() period = period_scale * random.random() offset = offset_scale * random.random() + amplitude return cls(amplitude, phase, period, offset, noise_ratio) if min_value is None: min_value = -sys.float_info.max if max_value is None: max_value = sys.float_info.max return cls(amplitude, phase, period, offset, noise_ratio, min_value, max_value) def get_sample(self) -> Sample: timestamp = datetime.timestamp(datetime.utcnow()) Loading @@ -49,6 +54,9 @@ class SyntheticSampler: noise = self.amplitude * random.random() value = abs((1.0 - self.noise_ratio) * waveform + self.noise_ratio * noise) value = max(value, self.min_value) value = min(value, self.max_value) return Sample(timestamp, 0, value) Loading Loading
src/simap_connector/service/simap_updater/SimapUpdater.py +3 −0 Original line number Diff line number Diff line Loading @@ -346,6 +346,8 @@ class EventDispatcher(BaseEventDispatcher): period_scale = 86_400, offset_scale = 50, noise_ratio = 0.05, min_value = 0.0, max_value = 100.0, ), latency_sampler=SyntheticSampler.create_random( amplitude_scale = 0.5, Loading @@ -353,6 +355,7 @@ class EventDispatcher(BaseEventDispatcher): period_scale = 60.0, offset_scale = 10.0, noise_ratio = 0.05, min_value = 0.0, ), related_service_ids=[], )) Loading
src/simap_connector/service/telemetry/worker/data/SyntheticSamplers.py +18 −10 Original line number Diff line number Diff line Loading @@ -13,31 +13,36 @@ # limitations under the License. import math, random, threading from dataclasses import dataclass import math, random, sys, threading from dataclasses import dataclass, field from datetime import datetime from typing import Dict from typing import Dict, Optional from .Sample import Sample @dataclass class SyntheticSampler: amplitude : float = 0.0 phase : float = 0.0 period : float = 1.0 offset : float = 0.0 noise_ratio : float = 0.0 amplitude : float = field(default=0.0) phase : float = field(default=0.0) period : float = field(default=1.0) offset : float = field(default=0.0) noise_ratio : float = field(default=0.0) min_value : float = field(default=-sys.float_info.max) max_value : float = field(default=sys.float_info.max) @classmethod def create_random( cls, amplitude_scale : float, phase_scale : float, period_scale : float, offset_scale : float, noise_ratio : float offset_scale : float, noise_ratio : float, min_value : Optional[float] = None, max_value : Optional[float] = None ) -> 'SyntheticSampler': amplitude = amplitude_scale * random.random() phase = phase_scale * random.random() period = period_scale * random.random() offset = offset_scale * random.random() + amplitude return cls(amplitude, phase, period, offset, noise_ratio) if min_value is None: min_value = -sys.float_info.max if max_value is None: max_value = sys.float_info.max return cls(amplitude, phase, period, offset, noise_ratio, min_value, max_value) def get_sample(self) -> Sample: timestamp = datetime.timestamp(datetime.utcnow()) Loading @@ -49,6 +54,9 @@ class SyntheticSampler: noise = self.amplitude * random.random() value = abs((1.0 - self.noise_ratio) * waveform + self.noise_ratio * noise) value = max(value, self.min_value) value = min(value, self.max_value) return Sample(timestamp, 0, value) Loading