|
102 | 102 | expect(DB::table('pulse_aggregates')->where('period', 1440)->count())->toBe(1);
|
103 | 103 | });
|
104 | 104 |
|
| 105 | +it('trims aggregates to the configured storage duration when configured trim is shorter than the bucket period duration', function () { |
| 106 | + Config::set('pulse.storage.trim.keep', '23 minutes'); |
| 107 | + Date::setTestNow('2000-01-01 00:00:00'); // Bucket: 2000-01-01 00:00:00 |
| 108 | + Pulse::record('foo', 'xxxx', 1)->count(); |
| 109 | + Pulse::ingest(); |
| 110 | + Pulse::stopRecording(); |
| 111 | + expect(DB::table('pulse_aggregates')->where('period', 1440)->count())->toBe(1); |
| 112 | + |
| 113 | + Date::setTestNow('2000-01-01 00:22:59'); |
| 114 | + App::make(DatabaseStorage::class)->trim(); |
| 115 | + expect(DB::table('pulse_aggregates')->where('period', 1440)->count())->toBe(1); |
| 116 | + |
| 117 | + Date::setTestNow('2000-01-01 00:23:00'); |
| 118 | + Pulse::ignore(fn () => App::make(DatabaseStorage::class)->trim()); |
| 119 | + expect(DB::table('pulse_aggregates')->where('period', 1440)->count())->toBe(0); |
| 120 | +}); |
| 121 | + |
105 | 122 | it('trims aggregates once the 7 day bucket is no longer relevant', function () {
|
106 | 123 | Date::setTestNow('2000-01-01 02:23:59'); // Bucket: 1999-12-31 23:36:00
|
107 | 124 | Pulse::record('foo', 'xxxx', 1)->count();
|
|
124 | 141 | });
|
125 | 142 |
|
126 | 143 | it('can configure days of data to keep when trimming', function () {
|
127 |
| - Config::set('pulse.ingest.trim.keep', '14 days'); |
| 144 | + Config::set('pulse.storage.trim.keep', '2 days'); |
128 | 145 |
|
129 | 146 | Date::setTestNow('2000-01-01 00:00:04');
|
130 |
| - Pulse::record('foo', 'xxxx', 1); |
| 147 | + Pulse::record('foo', 'xxxx', 1)->count(); |
| 148 | + Pulse::set('type', 'foo', 'value'); |
131 | 149 | Date::setTestNow('2000-01-01 00:00:05');
|
132 |
| - Pulse::record('bar', 'xxxx', 1); |
| 150 | + Pulse::record('bar', 'xxxx', 1)->count(); |
| 151 | + Pulse::set('type', 'bar', 'value'); |
133 | 152 | Date::setTestNow('2000-01-01 00:00:06');
|
134 |
| - Pulse::record('baz', 'xxxx', 1); |
| 153 | + Pulse::record('baz', 'xxxx', 1)->count(); |
| 154 | + Pulse::set('type', 'baz', 'value'); |
| 155 | + Pulse::ingest(); |
| 156 | + |
| 157 | + Pulse::stopRecording(); |
| 158 | + Date::setTestNow('2000-01-03 00:00:05'); |
| 159 | + App::make(DatabaseStorage::class)->trim(); |
| 160 | + |
| 161 | + expect(DB::table('pulse_entries')->pluck('type')->all())->toBe(['baz']); |
| 162 | + expect(DB::table('pulse_values')->pluck('key')->all())->toBe(['baz']); |
| 163 | +}); |
| 164 | + |
| 165 | +it('restricts trim duration to 7 days', function () { |
| 166 | + Config::set('pulse.storage.trim.keep', '7 days'); |
| 167 | + |
| 168 | + Date::setTestNow('2000-01-01 00:00:04'); |
| 169 | + Pulse::record('foo', 'xxxx', 1)->count(); |
| 170 | + Pulse::set('type', 'foo', 'value'); |
| 171 | + Date::setTestNow('2000-01-01 00:00:05'); |
| 172 | + Pulse::record('bar', 'xxxx', 1)->count(); |
| 173 | + Pulse::set('type', 'bar', 'value'); |
| 174 | + Date::setTestNow('2000-01-01 00:00:06'); |
| 175 | + Pulse::record('baz', 'xxxx', 1)->count(); |
| 176 | + Pulse::set('type', 'baz', 'value'); |
135 | 177 | Pulse::ingest();
|
136 | 178 |
|
137 | 179 | Pulse::stopRecording();
|
138 |
| - Date::setTestNow('2000-01-15 00:00:05'); |
| 180 | + Date::setTestNow('2000-01-08 00:00:05'); |
139 | 181 | App::make(DatabaseStorage::class)->trim();
|
140 | 182 |
|
141 | 183 | expect(DB::table('pulse_entries')->pluck('type')->all())->toBe(['baz']);
|
| 184 | + expect(DB::table('pulse_values')->pluck('key')->all())->toBe(['baz']); |
142 | 185 | });
|
0 commit comments