DttResult.php 2.88 KB
Newer Older
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
<?php

class DttResult {

    public $name;

    /**
     * State is defined like below
     *
     *  0 UNKNOWN
     *  1 SUCCESS
     *  2 FAILURE
     *  3 COMPILATIONERROR
     */
    public $state;

    public $failureType;
    public $failureReason;
    public $stacktrace;

    public $columnNumber;
    public $lineNumber;
    public $position;

    /**
     * @return name of state like defined
     */
    public static function getStateName(int $state): string {
        if ($state == 1) {
            return "success";
        } else if ($state == 2) {
            return "failed";
        } else if ($state == 3) {
            return "compilation error";
        } else {
            return "unknown";
        }
    }
}

class DttResultSummary {

    public $timestamp;
    public $globalStacktrace;
    public $results;

    /**
     * @param string $jsonString jsonString containing DttResultSummary
     * @return DttResultSummary
     */
    public static function decodeJson($jsonString): DttResultSummary {
        $response = json_decode($jsonString);

        $summary = new DttResultSummary();
        $summary->timestamp = $response->timestamp;
        $summary->globalStacktrace = $response->globalStacktrace;
        $summary->results = self::decodeJsonResultArray($response->results);

        return $summary;
    }

    /**
     * @param array $jsonArray decoded json array of results array
     * @return array of DttResult
     */
    private static function decodeJsonResultArray($jsonArray): array {
        $ret = array();
        foreach ($jsonArray as $entry) {
            $value = new DttResult();
            $value->name = $entry->name;
            $value->state = $entry->state;

            $value->failureType = $entry->failureType;
            $value->failureReason = $entry->failureReason;
            $value->stacktrace = $entry->stacktrace;

            $value->columnNumber = $entry->columnNumber;
            $value->lineNumber = $entry->lineNumber;
            $value->position = $entry->position;

            $ret[] = $value;
        }
        return $ret;
    }

    /**
     * @param int $state state ordinal number
     * @return int count of occurences provided state has
     */
    public function stateOccurenceCount(int $state): int {
        $num = 0;
        foreach($this->results as $r) {
            if ($r->state == $state) {
                $num++;
            }
        }

        return $num;
    }

    public function compilationErrorCount(): int {
        return $this->stateOccurenceCount(3);
    }

    public function failedCount(): int {
        return $this->stateOccurenceCount(2);
    }

    public function resultCount(): int {
        return count($this->results);
    }

    public function successfulCount(): int {
        return $this->stateOccurenceCount(1);
    }

    public function unknownCount(): int {
        return $this->stateOccurenceCount(0);
    }

}