diff --git a/Dockerfile b/Dockerfile index e061983..1aad5e0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,10 +12,10 @@ LABEL org.opencontainers.image.vendor="neuland – Büro für Informatik GmbH" LABEL org.opencontainers.image.licenses="Apache-2.0" LABEL org.opencontainers.image.title="bandwhichd-server" LABEL org.opencontainers.image.description="bandwhichd server collecting measurements and calculating statistics" -LABEL org.opencontainers.image.version="0.6.0-rc5" +LABEL org.opencontainers.image.version="0.6.0-rc6" USER guest ENTRYPOINT ["/opt/java/openjdk/bin/java"] CMD ["-jar", "/opt/bandwhichd-server.jar"] EXPOSE 8080 STOPSIGNAL SIGTERM -COPY --from=build --chown=root:root /tmp/bandwhichd-server/target/scala-3.1.3/bandwhichd-server-assembly-0.6.0-rc5.jar /opt/bandwhichd-server.jar \ No newline at end of file +COPY --from=build --chown=root:root /tmp/bandwhichd-server/target/scala-3.1.3/bandwhichd-server-assembly-0.6.0-rc6.jar /opt/bandwhichd-server.jar \ No newline at end of file diff --git a/build.sbt b/build.sbt index 3be4759..2369797 100644 --- a/build.sbt +++ b/build.sbt @@ -2,7 +2,7 @@ lazy val root = (project in file(".")) .settings( organization := "de.neuland-bfi", name := "bandwhichd-server", - version := "0.6.0-rc5", + version := "0.6.0-rc6", scalaVersion := "3.1.3", Compile / scalaSource := baseDirectory.value / "src" / "main" / "scala", Test / scalaSource := baseDirectory.value / "src" / "test" / "scala", diff --git a/src/main/scala/de/neuland/bandwhichd/server/adapter/in/v1/message/Message.scala b/src/main/scala/de/neuland/bandwhichd/server/adapter/in/v1/message/Message.scala index a26a6b5..0297b0e 100644 --- a/src/main/scala/de/neuland/bandwhichd/server/adapter/in/v1/message/Message.scala +++ b/src/main/scala/de/neuland/bandwhichd/server/adapter/in/v1/message/Message.scala @@ -29,14 +29,14 @@ object Message { case MeasurementMessage(nc: Measurement.NetworkConfiguration) => Json.obj( "type" -> Json.fromString( - "bandwhichd/measurement/network-configuration/v1" + "bandwhichd/measurement/agent-network-configuration/v1" ), "content" -> Encoder[Measurement.NetworkConfiguration].apply(nc) ) case MeasurementMessage(nu: Measurement.NetworkUtilization) => Json.obj( "type" -> Json.fromString( - "bandwhichd/measurement/network-utilization/v1" + "bandwhichd/measurement/agent-network-utilization/v1" ), "content" -> Encoder[Measurement.NetworkUtilization].apply(nu) ) @@ -46,10 +46,10 @@ object Message { for { `type` <- c.get[String]("type") message <- `type` match - case "bandwhichd/measurement/network-configuration/v1" => + case "bandwhichd/measurement/agent-network-configuration/v1" => c.get[Measurement.NetworkConfiguration]("content") .map(MeasurementMessage.apply) - case "bandwhichd/measurement/network-utilization/v1" => + case "bandwhichd/measurement/agent-network-utilization/v1" => c.get[Measurement.NetworkUtilization]("content") .map(MeasurementMessage.apply) case _ => @@ -57,18 +57,16 @@ object Message { } yield message given Codec[Measurement.NetworkConfiguration] = - Codec.forProduct6( - "agent_id", - "timestamp", + Codec.forProduct5( "machine_id", + "timestamp", "hostname", "interfaces", "open_sockets" )(Measurement.NetworkConfiguration.apply)(nc => ( - nc.agentId, - nc.timing, nc.machineId, + nc.timing, nc.hostname, nc.interfaces, nc.openSockets @@ -77,12 +75,12 @@ object Message { given Codec[Measurement.NetworkUtilization] = Codec.forProduct3( - "agent_id", + "machine_id", "timeframe", "connections" )(Measurement.NetworkUtilization.apply)(nu => ( - nu.agentId, + nu.machineId, nu.timing, nu.connections ) @@ -153,8 +151,6 @@ object Message { Decoder[A].map(Sent.apply) /////////////////////// - given Encoder[AgentId] = Encoder[UUID].contramap(_.value) - given Decoder[AgentId] = Decoder[UUID].map(AgentId.apply) given Encoder[BytesCount] = Encoder[String].contramap(_.value.toString) given Decoder[BytesCount] = Decoder[BigInt].map(BytesCount.apply) given Encoder[InterfaceName] = Encoder[String].contramap(_.value) diff --git a/src/main/scala/de/neuland/bandwhichd/server/adapter/out/CassandraMigration.scala b/src/main/scala/de/neuland/bandwhichd/server/adapter/out/CassandraMigration.scala index f4e513a..d73859e 100644 --- a/src/main/scala/de/neuland/bandwhichd/server/adapter/out/CassandraMigration.scala +++ b/src/main/scala/de/neuland/bandwhichd/server/adapter/out/CassandraMigration.scala @@ -28,14 +28,13 @@ class CassandraMigration[F[_]: Async]( | date date, | timestamp timestamp, | end_timestamp timestamp, - | agent_id uuid, + | machine_id uuid, | measurement_type ascii, - | network_configuration_machine_id uuid, | network_configuration_hostname text, | network_configuration_interfaces frozen>>, | network_configuration_open_sockets frozen>>, | network_utilization_connections frozen>>, - | primary key ((date), timestamp, agent_id, measurement_type), + | primary key ((date), timestamp, machine_id, measurement_type), |) with clustering order by (timestamp asc)""".stripMargin ) .setKeyspace(configuration.measurementsKeyspace) diff --git a/src/main/scala/de/neuland/bandwhichd/server/adapter/out/measurement/MeasurementCassandraCodecs.scala b/src/main/scala/de/neuland/bandwhichd/server/adapter/out/measurement/MeasurementCassandraCodecs.scala index b967554..0f0cda7 100644 --- a/src/main/scala/de/neuland/bandwhichd/server/adapter/out/measurement/MeasurementCassandraCodecs.scala +++ b/src/main/scala/de/neuland/bandwhichd/server/adapter/out/measurement/MeasurementCassandraCodecs.scala @@ -8,22 +8,21 @@ import de.neuland.bandwhichd.server.domain.measurement.* import de.neuland.bandwhichd.server.lib.time.Interval import io.circe.* +import java.time.* import java.time.ZoneOffset.UTC import java.time.format.DateTimeFormatter.ISO_DATE_TIME import java.time.format.{DateTimeFormatter, DateTimeFormatterBuilder} -import java.time.* import java.util.UUID import scala.util.Try object MeasurementCassandraCodecs { given Codec[Measurement[Timing]] = - Codec.forProduct10( + Codec.forProduct9( "date", "timestamp", "end_timestamp", - "agent_id", + "machine_id", "measurement_type", - "network_configuration_machine_id", "network_configuration_hostname", "network_configuration_interfaces", "network_configuration_open_sockets", @@ -33,9 +32,8 @@ object MeasurementCassandraCodecs { _: String, timestamp: Timing.Timestamp, endTimestamp: Timing.Timestamp, - agentId: AgentId, + machineId: MachineId, measurementType: String, - machinedId: MachineId, hostname: Hostname, interfaces: Seq[Interface], openSockets: Seq[OpenSocket], @@ -44,16 +42,15 @@ object MeasurementCassandraCodecs { measurementType match case "network_configuration" => Measurement.NetworkConfiguration( - agentId = agentId, + machineId = machineId, timing = timestamp, - machineId = machinedId, hostname = hostname, interfaces = interfaces, openSockets = openSockets ) case "network_utilization" => Measurement.NetworkUtilization( - agentId = agentId, + machineId = machineId, timing = Timing.Timeframe( Interval( start = timestamp.instant, @@ -69,9 +66,8 @@ object MeasurementCassandraCodecs { ) )(_ match case Measurement.NetworkConfiguration( - agentId, - timing, machineId, + timing, hostname, interfaces, openSockets @@ -80,16 +76,15 @@ object MeasurementCassandraCodecs { LocalDate.ofInstant(timing.value, UTC).toString, timing, Timing.Timestamp(Instant.EPOCH), - agentId, - "network_configuration", machineId, + "network_configuration", hostname, interfaces, openSockets, Seq.empty[Connection] ) case Measurement.NetworkUtilization( - agentId, + machineId, timing, connections ) => @@ -97,9 +92,8 @@ object MeasurementCassandraCodecs { LocalDate.ofInstant(timing.value.normalizedStart, UTC).toString, Timing.Timestamp(timing.value.normalizedStart), Timing.Timestamp(timing.value.normalizedStop), - agentId, + machineId, "network_utilization", - MachineId(new UUID(0, 0)), Hostname.fromString("a").get, Seq.empty[Interface], Seq.empty[OpenSocket], @@ -182,8 +176,6 @@ object MeasurementCassandraCodecs { /////////////////////// - given Encoder[AgentId] = Encoder[UUID].contramap(_.value) - given Decoder[AgentId] = Decoder[UUID].map(AgentId.apply) given Encoder[BytesCount] = Encoder[BigInt].contramap(_.value) given Decoder[BytesCount] = Decoder[BigInt].map(BytesCount.apply) given Encoder[InterfaceName] = Encoder[String].contramap(_.value) diff --git a/src/main/scala/de/neuland/bandwhichd/server/adapter/out/measurement/MeasurementsCassandraRepository.scala b/src/main/scala/de/neuland/bandwhichd/server/adapter/out/measurement/MeasurementsCassandraRepository.scala index a5add8c..c100bea 100644 --- a/src/main/scala/de/neuland/bandwhichd/server/adapter/out/measurement/MeasurementsCassandraRepository.scala +++ b/src/main/scala/de/neuland/bandwhichd/server/adapter/out/measurement/MeasurementsCassandraRepository.scala @@ -8,7 +8,7 @@ import com.datastax.oss.driver.api.core.cql.{SimpleStatement, Statement} import de.neuland.bandwhichd.server.adapter.out.measurement.MeasurementCassandraCodecs.given import de.neuland.bandwhichd.server.boot.Configuration import de.neuland.bandwhichd.server.domain.measurement.* -import de.neuland.bandwhichd.server.domain.{AgentId, Interface, MachineId} +import de.neuland.bandwhichd.server.domain.{Interface, MachineId} import de.neuland.bandwhichd.server.lib.cassandra.CassandraContext import de.neuland.bandwhichd.server.lib.time.Interval import fs2.Stream diff --git a/src/main/scala/de/neuland/bandwhichd/server/domain/AgentId.scala b/src/main/scala/de/neuland/bandwhichd/server/domain/AgentId.scala deleted file mode 100644 index 87a0dc5..0000000 --- a/src/main/scala/de/neuland/bandwhichd/server/domain/AgentId.scala +++ /dev/null @@ -1,13 +0,0 @@ -package de.neuland.bandwhichd.server.domain - -import java.util.UUID - -opaque type AgentId = UUID - -object AgentId { - def apply(value: UUID): AgentId = value - - extension (agentId: AgentId) { - def value: UUID = agentId - } -} diff --git a/src/main/scala/de/neuland/bandwhichd/server/domain/measurement/Measurement.scala b/src/main/scala/de/neuland/bandwhichd/server/domain/measurement/Measurement.scala index 915fccd..b81974b 100644 --- a/src/main/scala/de/neuland/bandwhichd/server/domain/measurement/Measurement.scala +++ b/src/main/scala/de/neuland/bandwhichd/server/domain/measurement/Measurement.scala @@ -4,7 +4,7 @@ import com.comcast.ip4s.Hostname import de.neuland.bandwhichd.server.domain.* sealed trait Measurement[+T <: Timing] { - def agentId: AgentId + def machineId: MachineId def timing: T def timestamp: Timing.Timestamp = timing match @@ -14,16 +14,15 @@ sealed trait Measurement[+T <: Timing] { object Measurement { case class NetworkConfiguration( - agentId: AgentId, - timing: Timing.Timestamp, machineId: MachineId, + timing: Timing.Timestamp, hostname: Hostname, interfaces: Seq[Interface], openSockets: Seq[OpenSocket] ) extends Measurement[Timing.Timestamp] case class NetworkUtilization( - agentId: AgentId, + machineId: MachineId, timing: Timing.Timeframe, connections: Seq[Connection] ) extends Measurement[Timing.Timeframe] diff --git a/src/main/scala/de/neuland/bandwhichd/server/domain/stats/Host.scala b/src/main/scala/de/neuland/bandwhichd/server/domain/stats/Host.scala index 0d6c5e7..f7cd6ff 100644 --- a/src/main/scala/de/neuland/bandwhichd/server/domain/stats/Host.scala +++ b/src/main/scala/de/neuland/bandwhichd/server/domain/stats/Host.scala @@ -45,7 +45,6 @@ object MachineIdHost { case class MonitoredHost( hostId: HostId.MachineId, - agentIds: Set[AgentId], hostname: Hostname, additionalHostnames: Set[Hostname], interfaces: Set[Interface] diff --git a/src/main/scala/de/neuland/bandwhichd/server/domain/stats/Stats.scala b/src/main/scala/de/neuland/bandwhichd/server/domain/stats/Stats.scala index 5afb8e7..504d824 100644 --- a/src/main/scala/de/neuland/bandwhichd/server/domain/stats/Stats.scala +++ b/src/main/scala/de/neuland/bandwhichd/server/domain/stats/Stats.scala @@ -62,9 +62,8 @@ object Stats { ): MonitoredStats = measurement match case Measurement.NetworkConfiguration( - agentId, - timing, machineId, + timing, hostname, interfaces, _ @@ -75,9 +74,6 @@ object Stats { : Option[Bundle[HostId.MachineId, MonitoredHost, HostId]] = stats.bundles .get(hostId) - .orElse { - stats.bundles.values.find(_.host.agentIds.contains(agentId)) - } .orElse { stats.bundles.values.find(_.host.hostnames.contains(hostname)) } @@ -87,7 +83,6 @@ object Stats { Stats.Bundle( host = MonitoredHost( hostId = hostId, - agentIds = Set(agentId), hostname = hostname, additionalHostnames = Set.empty, interfaces = interfaces.toSet @@ -99,7 +94,6 @@ object Stats { bundle.copy( host = MonitoredHost( hostId = hostId, - agentIds = bundle.host.agentIds + agentId, hostname = hostname, additionalHostnames = bundle.host.hostnames - hostname, interfaces = bundle.host.interfaces ++ interfaces @@ -111,12 +105,14 @@ object Stats { new Stats(stats.bundles + (hostId -> bundle)) case Measurement.NetworkUtilization( - agentId, + machineId, timing, connections ) => - stats.bundles.values - .find(_.host.agentIds.contains(agentId)) + val hostId: HostId.MachineId = HostId(machineId) + + stats.bundles + .get(hostId) .fold(stats) { bundle => new Stats( stats.bundles + (bundle.host.hostId -> bundle.copy( diff --git a/src/test/resources/de/neuland/bandwhichd/server/adapter/in/v1/message/bandwhichd/measurement/network-configuration/v1/example.json b/src/test/resources/de/neuland/bandwhichd/server/adapter/in/v1/message/bandwhichd/measurement/agent-network-configuration/v1/example.json similarity index 91% rename from src/test/resources/de/neuland/bandwhichd/server/adapter/in/v1/message/bandwhichd/measurement/network-configuration/v1/example.json rename to src/test/resources/de/neuland/bandwhichd/server/adapter/in/v1/message/bandwhichd/measurement/agent-network-configuration/v1/example.json index eece047..8ace49f 100644 --- a/src/test/resources/de/neuland/bandwhichd/server/adapter/in/v1/message/bandwhichd/measurement/network-configuration/v1/example.json +++ b/src/test/resources/de/neuland/bandwhichd/server/adapter/in/v1/message/bandwhichd/measurement/agent-network-configuration/v1/example.json @@ -1,9 +1,8 @@ { - "type": "bandwhichd/measurement/network-configuration/v1", + "type": "bandwhichd/measurement/agent-network-configuration/v1", "content": { - "agent_id": "d254aebd-e092-4ced-b698-0448a46eaf7d", - "timestamp": "2022-05-06T15:14:51.742Z", "machine_id": "c414c2da-714c-4b68-b97e-3f31e18053d2", + "timestamp": "2022-05-06T15:14:51.742Z", "hostname": "some-host.example.com", "interfaces": [ { diff --git a/src/test/resources/de/neuland/bandwhichd/server/adapter/in/v1/message/bandwhichd/measurement/network-utilization/v1/example.json b/src/test/resources/de/neuland/bandwhichd/server/adapter/in/v1/message/bandwhichd/measurement/agent-network-utilization/v1/example.json similarity index 89% rename from src/test/resources/de/neuland/bandwhichd/server/adapter/in/v1/message/bandwhichd/measurement/network-utilization/v1/example.json rename to src/test/resources/de/neuland/bandwhichd/server/adapter/in/v1/message/bandwhichd/measurement/agent-network-utilization/v1/example.json index 1a953b3..230c80c 100644 --- a/src/test/resources/de/neuland/bandwhichd/server/adapter/in/v1/message/bandwhichd/measurement/network-utilization/v1/example.json +++ b/src/test/resources/de/neuland/bandwhichd/server/adapter/in/v1/message/bandwhichd/measurement/agent-network-utilization/v1/example.json @@ -1,7 +1,7 @@ { - "type": "bandwhichd/measurement/network-utilization/v1", + "type": "bandwhichd/measurement/agent-network-utilization/v1", "content": { - "agent_id": "d254aebd-e092-4ced-b698-0448a46eaf7d", + "machine_id": "c414c2da-714c-4b68-b97e-3f31e18053d2", "timeframe": "2022-05-06T15:14:51.942Z/PT10.001S", "connections": [ { diff --git a/src/test/scala/de/neuland/bandwhichd/server/adapter/in/v1/message/ApiV1MessageV1Fixtures.scala b/src/test/scala/de/neuland/bandwhichd/server/adapter/in/v1/message/ApiV1MessageV1Fixtures.scala index d818171..eb0101e 100644 --- a/src/test/scala/de/neuland/bandwhichd/server/adapter/in/v1/message/ApiV1MessageV1Fixtures.scala +++ b/src/test/scala/de/neuland/bandwhichd/server/adapter/in/v1/message/ApiV1MessageV1Fixtures.scala @@ -8,7 +8,7 @@ object ApiV1MessageV1Fixtures { Using( Source.fromURL( getClass.getClassLoader.getResource( - "de/neuland/bandwhichd/server/adapter/in/v1/message/bandwhichd/measurement/network-configuration/v1/example.json" + "de/neuland/bandwhichd/server/adapter/in/v1/message/bandwhichd/measurement/agent-network-configuration/v1/example.json" ) ) )(_.mkString).get @@ -24,7 +24,7 @@ object ApiV1MessageV1Fixtures { Using( Source.fromURL( getClass.getClassLoader.getResource( - "de/neuland/bandwhichd/server/adapter/in/v1/message/bandwhichd/measurement/network-utilization/v1/example.json" + "de/neuland/bandwhichd/server/adapter/in/v1/message/bandwhichd/measurement/agent-network-utilization/v1/example.json" ) ) )(_.mkString).get diff --git a/src/test/scala/de/neuland/bandwhichd/server/adapter/in/v1/message/MessageSpec.scala b/src/test/scala/de/neuland/bandwhichd/server/adapter/in/v1/message/MessageSpec.scala index 2bef7a4..d354ee6 100644 --- a/src/test/scala/de/neuland/bandwhichd/server/adapter/in/v1/message/MessageSpec.scala +++ b/src/test/scala/de/neuland/bandwhichd/server/adapter/in/v1/message/MessageSpec.scala @@ -8,7 +8,7 @@ import org.scalatest.wordspec.AnyWordSpec class MessageSpec extends AnyWordSpec with Matchers { "Message" should { - "be parse-able from API version 1 JSON for bandwhichd/measurement/network-configuration/v1" in { + "be parse-able from API version 1 JSON for bandwhichd/measurement/agent-network-configuration/v1" in { // given val json = ApiV1MessageV1Fixtures.exampleNetworkConfigurationMeasurementJson @@ -24,7 +24,7 @@ class MessageSpec extends AnyWordSpec with Matchers { ) } - "be parse-able from API version 1 JSON for bandwhichd/measurement/network-utilization/v1" in { + "be parse-able from API version 1 JSON for bandwhichd/measurement/agent-network-utilization/v1" in { // given val json = ApiV1MessageV1Fixtures.exampleNetworkUtilizationMeasurementJson @@ -39,7 +39,7 @@ class MessageSpec extends AnyWordSpec with Matchers { ) } - "be writable if type is bandwhichd/measurement/network-configuration/v1" in { + "be writable if type is bandwhichd/measurement/agent-network-configuration/v1" in { // given val message = Message.MeasurementMessage( measurement = MeasurementFixtures.exampleNetworkConfigurationMeasurement @@ -52,7 +52,7 @@ class MessageSpec extends AnyWordSpec with Matchers { result shouldBe ApiV1MessageV1Fixtures.exampleNetworkConfigurationMeasurementJsonNoSpaces } - "be writable if type is bandwhichd/measurement/network-utilization/v1" in { + "be writable if type is bandwhichd/measurement/agent-network-utilization/v1" in { // given val message = Message.MeasurementMessage( measurement = MeasurementFixtures.exampleNetworkUtilizationMeasurement diff --git a/src/test/scala/de/neuland/bandwhichd/server/adapter/out/measurement/MeasurementsInMemoryRepository.scala b/src/test/scala/de/neuland/bandwhichd/server/adapter/out/measurement/MeasurementsInMemoryRepository.scala index aa373e4..86a7c07 100644 --- a/src/test/scala/de/neuland/bandwhichd/server/adapter/out/measurement/MeasurementsInMemoryRepository.scala +++ b/src/test/scala/de/neuland/bandwhichd/server/adapter/out/measurement/MeasurementsInMemoryRepository.scala @@ -38,13 +38,13 @@ private object MeasurementsInMemoryRepository { case NetworkConfiguration, NetworkUtilization } - type ByDateKey = (Timing.Timestamp, AgentId, MeasurementType) + type ByDateKey = (Timing.Timestamp, MachineId, MeasurementType) extension (measurement: Measurement[Timing]) { def byDateKey: ByDateKey = ( measurement.timestamp, - measurement.agentId, + measurement.machineId, measurement.`type` ) diff --git a/src/test/scala/de/neuland/bandwhichd/server/domain/measurement/MeasurementFixtures.scala b/src/test/scala/de/neuland/bandwhichd/server/domain/measurement/MeasurementFixtures.scala index 811d2cd..2747b0c 100644 --- a/src/test/scala/de/neuland/bandwhichd/server/domain/measurement/MeasurementFixtures.scala +++ b/src/test/scala/de/neuland/bandwhichd/server/domain/measurement/MeasurementFixtures.scala @@ -11,12 +11,10 @@ import java.util.UUID object MeasurementFixtures { val exampleNetworkConfigurationMeasurement: Measurement.NetworkConfiguration = Measurement.NetworkConfiguration( - agentId = - AgentId(UUID.fromString("d254aebd-e092-4ced-b698-0448a46eaf7d")), - timing = - Timing.Timestamp(ZonedDateTime.parse("2022-05-06T15:14:51.742Z")), machineId = MachineId(UUID.fromString("c414c2da-714c-4b68-b97e-3f31e18053d2")), + timing = + Timing.Timestamp(ZonedDateTime.parse("2022-05-06T15:14:51.742Z")), hostname = Hostname.fromString("some-host.example.com").get, interfaces = Seq( Interface( @@ -109,8 +107,8 @@ object MeasurementFixtures { val exampleNetworkUtilizationMeasurement: Measurement.NetworkUtilization = Measurement.NetworkUtilization( - agentId = - AgentId(UUID.fromString("d254aebd-e092-4ced-b698-0448a46eaf7d")), + machineId = + MachineId(UUID.fromString("c414c2da-714c-4b68-b97e-3f31e18053d2")), timing = Timing.Timeframe( Interval( start = Instant.parse("2022-05-06T15:14:51.942Z"), diff --git a/src/test/scala/de/neuland/bandwhichd/server/domain/stats/StatsSpec.scala b/src/test/scala/de/neuland/bandwhichd/server/domain/stats/StatsSpec.scala index 679a920..c5de443 100644 --- a/src/test/scala/de/neuland/bandwhichd/server/domain/stats/StatsSpec.scala +++ b/src/test/scala/de/neuland/bandwhichd/server/domain/stats/StatsSpec.scala @@ -37,7 +37,6 @@ class StatsSpec result.hosts should contain( MonitoredHost( hostId = HostId(nc.machineId), - agentIds = Set(nc.agentId), hostname = nc.hostname, additionalHostnames = Set.empty, interfaces = nc.interfaces.toSet @@ -67,13 +66,11 @@ class StatsSpec // given val measurements: Seq[Measurement[Timing]] = Seq( Measurement.NetworkConfiguration( - agentId = - AgentId(UUID.fromString("0b7f7d58-3c5c-4f92-9ada-4c27ab19b195")), + machineId = + MachineId(UUID.fromString("a814d0d9-3dca-4acf-985f-442dd4262228")), timing = Timing.Timestamp( ZonedDateTime.parse("2022-05-18T18:09:50.34957395Z") ), - machineId = - MachineId(UUID.fromString("a814d0d9-3dca-4acf-985f-442dd4262228")), hostname = Hostname.fromString("some-host.example.com").get, interfaces = Seq.empty, openSockets = Seq.empty @@ -105,25 +102,21 @@ class StatsSpec // given val measurements: Seq[Measurement[Timing]] = Seq( Measurement.NetworkConfiguration( - agentId = - AgentId(UUID.fromString("a814d0d9-3dca-4acf-985f-442dd4262228")), + machineId = + MachineId(UUID.fromString("0b7f7d58-3c5c-4f92-9ada-4c27ab19b195")), timing = Timing.Timestamp( ZonedDateTime.parse("2022-05-18T18:09:50.34957395Z") ), - machineId = - MachineId(UUID.fromString("0b7f7d58-3c5c-4f92-9ada-4c27ab19b195")), hostname = Hostname.fromString("some-host.example.com").get, interfaces = Seq.empty, openSockets = Seq.empty ), Measurement.NetworkConfiguration( - agentId = - AgentId(UUID.fromString("a814d0d9-3dca-4acf-985f-442dd4262228")), + machineId = + MachineId(UUID.fromString("0c8cb005-a78b-49c5-8760-48daf08ea86f")), timing = Timing.Timestamp( ZonedDateTime.parse("2022-05-18T18:09:50.34957395Z") ), - machineId = - MachineId(UUID.fromString("0c8cb005-a78b-49c5-8760-48daf08ea86f")), hostname = Hostname.fromString("some-host.example.com").get, interfaces = Seq.empty, openSockets = Seq.empty @@ -149,25 +142,21 @@ class StatsSpec // given val measurements: Seq[Measurement[Timing]] = Seq( Measurement.NetworkConfiguration( - agentId = - AgentId(UUID.fromString("0b7f7d58-3c5c-4f92-9ada-4c27ab19b195")), + machineId = + MachineId(UUID.fromString("a814d0d9-3dca-4acf-985f-442dd4262228")), timing = Timing.Timestamp( ZonedDateTime.parse("2022-05-18T18:10:50.34957395Z") ), - machineId = - MachineId(UUID.fromString("a814d0d9-3dca-4acf-985f-442dd4262228")), hostname = Hostname.fromString("another-host.example.com").get, interfaces = Seq.empty, openSockets = Seq.empty ), Measurement.NetworkConfiguration( - agentId = - AgentId(UUID.fromString("0b7f7d58-3c5c-4f92-9ada-4c27ab19b195")), + machineId = + MachineId(UUID.fromString("a814d0d9-3dca-4acf-985f-442dd4262228")), timing = Timing.Timestamp( ZonedDateTime.parse("2022-05-18T18:09:50.34957395Z") ), - machineId = - MachineId(UUID.fromString("a814d0d9-3dca-4acf-985f-442dd4262228")), hostname = Hostname.fromString("some-host.example.com").get, interfaces = Seq.empty, openSockets = Seq.empty @@ -202,14 +191,10 @@ class StatsSpec "built from a network configuration and network utilization" should { // given - val agentId1 = - AgentId(UUID.fromString("4f705b72-8889-4dfd-9720-9b8a8d0f8f24")) val machineId1 = MachineId(UUID.fromString("8cf801f1-5592-49ce-a5e3-256648dfd7ea")) val hostId1 = HostId(machineId1) val hostname1 = Hostname.fromString("some-host.example.com").get - val agentId2 = - AgentId(UUID.fromString("c826b822-69b4-4dcc-844f-e1c604a8b724")) val machineId2 = MachineId(UUID.fromString("a54adaa9-2e35-4881-bc87-4e53d29d68ff")) val hostId2 = HostId(machineId2) @@ -240,9 +225,8 @@ class StatsSpec val measurements: Seq[Measurement[Timing]] = Seq( Measurement.NetworkConfiguration( - agentId = agentId1, - timing = start1, machineId = machineId1, + timing = start1, hostname = hostname1, interfaces = Seq( Interface( @@ -262,9 +246,8 @@ class StatsSpec ) ), Measurement.NetworkConfiguration( - agentId = agentId2, - timing = start2, machineId = machineId2, + timing = start2, hostname = hostname2, interfaces = Seq( Interface( @@ -278,7 +261,7 @@ class StatsSpec openSockets = Seq.empty ), Measurement.NetworkUtilization( - agentId = agentId1, + machineId = machineId1, timing = timeframe1a, connections = Seq( Connection( @@ -294,7 +277,7 @@ class StatsSpec ) ), Measurement.NetworkUtilization( - agentId = agentId1, + machineId = machineId1, timing = timeframe1b, connections = Seq( Connection( @@ -320,12 +303,12 @@ class StatsSpec ) ), Measurement.NetworkUtilization( - agentId = agentId2, + machineId = machineId2, timing = timeframe2a, connections = Seq.empty ), Measurement.NetworkUtilization( - agentId = agentId2, + machineId = machineId2, timing = timeframe2b, connections = Seq.empty ) @@ -411,7 +394,7 @@ class StatsSpec "keep host with utilization update timeframe ending after drop" in { // given val ncTemplate = ncGen() - val nuTemplate = nuGen().copy(agentId = ncTemplate.agentId) + val nuTemplate = nuGen().copy(machineId = ncTemplate.machineId) val baseTiming = ncTemplate.timestamp.instant @@ -443,7 +426,7 @@ class StatsSpec val host3 = host"host3" val ncTemplate = ncGen() - val nuTemplate = nuGen().copy(agentId = ncTemplate.agentId) + val nuTemplate = nuGen().copy(machineId = ncTemplate.machineId) val con1 = conGen().copy( remoteSocket = Remote(SocketAddress(host1, port"8080")) ) diff --git a/src/test/scala/de/neuland/bandwhichd/server/test/Arbitraries.scala b/src/test/scala/de/neuland/bandwhichd/server/test/Arbitraries.scala index d8ead1e..e34f7d0 100644 --- a/src/test/scala/de/neuland/bandwhichd/server/test/Arbitraries.scala +++ b/src/test/scala/de/neuland/bandwhichd/server/test/Arbitraries.scala @@ -43,7 +43,6 @@ object Arbitraries { /////////////////////// - given Gen[AgentId] = Gen.uuid.map(AgentId.apply) given Gen[BytesCount] = Gen.long.map(BigInt.apply).map(BytesCount.apply) given Gen[InterfaceName] = Gen .oneOf("enp0s31f6", "lo", "virbr0", "tun0", "wlp3s0") @@ -105,18 +104,16 @@ object Arbitraries { ) given Gen[Measurement.NetworkConfiguration] = for { - agentId <- summon[Gen[AgentId]] - timestamp <- summon[Gen[Timing.Timestamp]] machineId <- summon[Gen[MachineId]] + timestamp <- summon[Gen[Timing.Timestamp]] hostname <- Ip4sArbitraries.hostnameGenerator numberOfInterfaces <- Gen.chooseNum(1, 4) interfaces <- Gen.listOfN(numberOfInterfaces, summon[Gen[Interface]]) numberOfOpenSockets <- Gen.chooseNum(1, 7) openSockets <- Gen.listOfN(numberOfOpenSockets, summon[Gen[OpenSocket]]) } yield Measurement.NetworkConfiguration( - agentId = agentId, - timing = timestamp, machineId = machineId, + timing = timestamp, hostname = hostname, interfaces = interfaces, openSockets = openSockets @@ -139,7 +136,7 @@ object Arbitraries { ) given Gen[Measurement.NetworkUtilization] = for { - agentId <- summon[Gen[AgentId]] + machineId <- summon[Gen[MachineId]] timeframe <- timeframe( Duration.ofSeconds(10), Duration.ofSeconds(10).plusMillis(5) @@ -147,7 +144,7 @@ object Arbitraries { numberOfConnections <- Gen.chooseNum(0, 20) connections <- Gen.listOfN(numberOfConnections, summon[Gen[Connection]]) } yield Measurement.NetworkUtilization( - agentId = agentId, + machineId = machineId, timing = timeframe, connections = connections )