Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
15.00% covered (danger)
15.00%
3 / 20
20.00% covered (danger)
20.00%
3 / 15
CRAP
0.00% covered (danger)
0.00%
0 / 1
Counter
15.00% covered (danger)
15.00%
3 / 20
20.00% covered (danger)
20.00%
3 / 15
173.22
0.00% covered (danger)
0.00%
0 / 1
 getId
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
6
 setId
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getPage
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setPage
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getDateRange
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setDateRange
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getCounter
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setCounter
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 incrementCounter
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getLatencyAvgMs
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setLatencyAvgMs
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getLatencyNum
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setLatencyNum
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 addLatencyMeasurment
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
2
 testOnlyGetField
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace Olz\Entity;
4
5use Doctrine\ORM\Mapping as ORM;
6use Olz\Entity\Common\TestableInterface;
7use Olz\Repository\CounterRepository;
8
9#[ORM\Table(name: 'counter')]
10#[ORM\Index(name: 'date_range_page_index', columns: ['date_range', 'page'])]
11#[ORM\Entity(repositoryClass: CounterRepository::class)]
12class Counter implements TestableInterface {
13    #[ORM\Id]
14    #[ORM\Column(type: 'bigint', nullable: false)]
15    #[ORM\GeneratedValue]
16    private int|string $id;
17
18    #[ORM\Column(type: 'string', nullable: false)]
19    private string $page;
20
21    #[ORM\Column(type: 'string', nullable: false)]
22    private string $date_range;
23
24    #[ORM\Column(type: 'integer', nullable: false)]
25    private int $counter;
26
27    #[ORM\Column(type: 'float', nullable: false)]
28    private float $latency_avg_ms;
29
30    #[ORM\Column(type: 'integer', nullable: false)]
31    private int $latency_num;
32    // PRIMARY KEY (`id`)
33
34    public function getId(): ?int {
35        return isset($this->id) ? intval($this->id) : null;
36    }
37
38    public function setId(int $new_id): void {
39        $this->id = $new_id;
40    }
41
42    public function getPage(): string {
43        return $this->page;
44    }
45
46    public function setPage(string $new_page): void {
47        $this->page = $new_page;
48    }
49
50    public function getDateRange(): string {
51        return $this->date_range;
52    }
53
54    public function setDateRange(string $new_date_range): void {
55        $this->date_range = $new_date_range;
56    }
57
58    public function getCounter(): int {
59        return $this->counter;
60    }
61
62    public function setCounter(int $new_value): void {
63        $this->counter = $new_value;
64    }
65
66    public function incrementCounter(): void {
67        $this->setCounter($this->getCounter() + 1);
68    }
69
70    public function getLatencyAvgMs(): float {
71        return $this->latency_avg_ms;
72    }
73
74    public function setLatencyAvgMs(float $new_value): void {
75        $this->latency_avg_ms = $new_value;
76    }
77
78    public function getLatencyNum(): int {
79        return $this->latency_num;
80    }
81
82    public function setLatencyNum(int $new_value): void {
83        $this->latency_num = $new_value;
84    }
85
86    public function addLatencyMeasurment(float $new_latency_ms): void {
87        $avg = $this->getLatencyAvgMs();
88        $num = $this->getLatencyNum();
89        $new_num = $num + 1;
90        $new_avg = ($avg * $num + $new_latency_ms * 1) / $new_num;
91        $this->setLatencyAvgMs($new_avg);
92        $this->setLatencyNum($new_num);
93    }
94
95    // ---
96
97    public function testOnlyGetField(string $field_name): mixed {
98        return $this->{$field_name};
99    }
100}