-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTimeseriesEntityQuery.scala
65 lines (51 loc) · 2.32 KB
/
TimeseriesEntityQuery.scala
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
package io.sqooba.oss.chronosExamples
import zio.test._
import java.time.Instant
import zio.test.Assertion._
import scala.concurrent.duration._
import io.sqooba.oss.utils.Utils._
import io.sqooba.oss.utils.ChronosRunnable
import io.sqooba.oss.chronos.{Chronos, ChronosEntityId, Query}
import io.sqooba.oss.timeseries.entity.TsLabel
import org.junit.runner.RunWith
@RunWith(classOf[zio.test.junit.ZTestJUnitRunner])
class TimeseriesEntityQuery extends ChronosRunnable {
val spec: ChronosRunnable = suite("VictoriaMetrics Integration")(
testM("Querying from a timeseries identifier (TsId) works") {
val start = Instant.parse("2020-12-12T00:00:00.000Z")
val end = start.plusSeconds(5.minutes.toSeconds)
val step = 10.seconds
val label = "cpu"
final case class Workstation(id: Long) extends ChronosEntityId {
override def tags: Map[String, String] =
Map("type" -> "workstation", "id" -> id.toString)
}
val workstation = Workstation(1)
val tsId = workstation.buildTsId(TsLabel(label))
val queryFromTsId = Query.fromTsId(tsId, start, end, step = Some(step))
val insertDataPoints = insertFakePercentage(start, end, Map("__name__" -> label) ++ workstation.tags, step)
val queries = insertDataPoints *> Chronos.query(query = queryFromTsId)
for {
result <- queries
} yield assert(result.map)(isNonEmpty)
},
testM("Querying from a timeseries identifier (TsId) works with time duration") {
val start = Instant.parse("2020-12-12T00:00:00.000Z")
val end = start.plusSeconds(5.minutes.toSeconds)
val step = 10.seconds
val label = "cpu"
final case class Workstation(id: Long) extends ChronosEntityId {
override def tags: Map[String, String] =
Map("type" -> "workstation", "id" -> id.toString)
}
val workstation = Workstation(1)
val tsId = workstation.buildTsId(TsLabel(label))
val queryFromTsId = Query.fromTsId(tsId, start, end, step = Some(step))
val insertDataPoints = insertFakePercentage(start, end, Map("__name__" -> label) ++ workstation.tags, step)
val queries = insertDataPoints *> Chronos.query(query = queryFromTsId) <*> Chronos.query(query = queryFromTsId)
for {
(old, result) <- queries
} yield assert(result.map)(equalTo(old.map))
}
)
}