Commit c3940909 authored by iwakeh's avatar iwakeh 🌴 Committed by Karsten Loesing
Browse files

Rename Parsed* to Ipv6*.

Indicate that this is not the typical descriptor, but only provides relevant
information for the ipv6servers module.
parent 7456617d
Loading
Loading
Loading
Loading
+13 −16
Original line number Original line Diff line number Diff line
@@ -84,10 +84,10 @@ class Database implements AutoCloseable {


  /** Insert a server descriptor into the server_descriptors table. */
  /** Insert a server descriptor into the server_descriptors table. */
  void insertServerDescriptor(
  void insertServerDescriptor(
      ParsedServerDescriptor parsedServerDescriptor) throws SQLException {
      Ipv6ServerDescriptor serverDescriptor) throws SQLException {
    this.psServerDescriptorsSelect.clearParameters();
    this.psServerDescriptorsSelect.clearParameters();
    this.psServerDescriptorsSelect.setString(1,
    this.psServerDescriptorsSelect.setString(1,
        parsedServerDescriptor.digest);
        serverDescriptor.digest);
    try (ResultSet rs = psServerDescriptorsSelect.executeQuery()) {
    try (ResultSet rs = psServerDescriptorsSelect.executeQuery()) {
      if (rs.next()) {
      if (rs.next()) {
        if (rs.getBoolean(1)) {
        if (rs.getBoolean(1)) {
@@ -97,28 +97,25 @@ class Database implements AutoCloseable {
      }
      }
    }
    }
    this.psServerDescriptorsInsert.clearParameters();
    this.psServerDescriptorsInsert.clearParameters();
    this.psServerDescriptorsInsert.setString(1,
    this.psServerDescriptorsInsert.setString(1, serverDescriptor.digest);
        parsedServerDescriptor.digest);
    this.psServerDescriptorsInsert.setInt(2,
    this.psServerDescriptorsInsert.setInt(2,
        parsedServerDescriptor.advertisedBandwidth);
        serverDescriptor.advertisedBandwidth);
    this.psServerDescriptorsInsert.setBoolean(3,
    this.psServerDescriptorsInsert.setBoolean(3, serverDescriptor.announced);
        parsedServerDescriptor.announced);
    this.psServerDescriptorsInsert.setBoolean(4, serverDescriptor.exiting);
    this.psServerDescriptorsInsert.setBoolean(4,
        parsedServerDescriptor.exiting);
    this.psServerDescriptorsInsert.execute();
    this.psServerDescriptorsInsert.execute();
  }
  }


  /** Insert a status and all contained entries into the statuses and
  /** Insert a status and all contained entries into the statuses and
   * status_entries table. */
   * status_entries table. */
  void insertStatus(ParsedNetworkStatus parsedNetworkStatus)
  void insertStatus(Ipv6NetworkStatus networkStatus)
      throws SQLException {
      throws SQLException {
    this.psStatusesSelect.clearParameters();
    this.psStatusesSelect.clearParameters();
    this.psStatusesSelect.setString(1,
    this.psStatusesSelect.setString(1,
        parsedNetworkStatus.isRelay ? "relay" : "bridge");
        networkStatus.isRelay ? "relay" : "bridge");
    Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"),
    Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"),
        Locale.US);
        Locale.US);
    this.psStatusesSelect.setTimestamp(2,
    this.psStatusesSelect.setTimestamp(2,
        Timestamp.from(ZonedDateTime.of(parsedNetworkStatus.timestamp,
        Timestamp.from(ZonedDateTime.of(networkStatus.timestamp,
        ZoneId.of("UTC")).toInstant()), calendar);
        ZoneId.of("UTC")).toInstant()), calendar);
    try (ResultSet rs = this.psStatusesSelect.executeQuery()) {
    try (ResultSet rs = this.psStatusesSelect.executeQuery()) {
      if (rs.next()) {
      if (rs.next()) {
@@ -131,11 +128,11 @@ class Database implements AutoCloseable {
    int statusId = -1;
    int statusId = -1;
    this.psStatusesInsert.clearParameters();
    this.psStatusesInsert.clearParameters();
    this.psStatusesInsert.setString(1,
    this.psStatusesInsert.setString(1,
        parsedNetworkStatus.isRelay ? "relay" : "bridge");
        networkStatus.isRelay ? "relay" : "bridge");
    this.psStatusesInsert.setTimestamp(2,
    this.psStatusesInsert.setTimestamp(2,
        Timestamp.from(ZonedDateTime.of(parsedNetworkStatus.timestamp,
        Timestamp.from(ZonedDateTime.of(networkStatus.timestamp,
        ZoneId.of("UTC")).toInstant()), calendar);
        ZoneId.of("UTC")).toInstant()), calendar);
    this.psStatusesInsert.setInt(3, parsedNetworkStatus.running);
    this.psStatusesInsert.setInt(3, networkStatus.running);
    this.psStatusesInsert.execute();
    this.psStatusesInsert.execute();
    try (ResultSet rs = this.psStatusesInsert.getGeneratedKeys()) {
    try (ResultSet rs = this.psStatusesInsert.getGeneratedKeys()) {
      if (rs.next()) {
      if (rs.next()) {
@@ -146,7 +143,7 @@ class Database implements AutoCloseable {
      throw new SQLException("Could not retrieve auto-generated key for new "
      throw new SQLException("Could not retrieve auto-generated key for new "
          + "statuses entry.");
          + "statuses entry.");
    }
    }
    for (ParsedNetworkStatus.Entry entry : parsedNetworkStatus.entries) {
    for (Ipv6NetworkStatus.Entry entry : networkStatus.entries) {
      this.psStatusEntriesInsert.clearParameters();
      this.psStatusEntriesInsert.clearParameters();
      this.psStatusEntriesInsert.setInt(1, statusId);
      this.psStatusEntriesInsert.setInt(1, statusId);
      this.psStatusEntriesInsert.setString(2, entry.digest);
      this.psStatusEntriesInsert.setString(2, entry.digest);
+1 −1
Original line number Original line Diff line number Diff line
@@ -9,7 +9,7 @@ import java.util.List;


/** Data object holding all relevant parts parsed from a (relay or bridge)
/** Data object holding all relevant parts parsed from a (relay or bridge)
 * network status. */
 * network status. */
class ParsedNetworkStatus {
class Ipv6NetworkStatus {


  /** Whether this is a relay network status as opposed to a bridge network
  /** Whether this is a relay network status as opposed to a bridge network
   * status. */
   * status. */
+1 −1
Original line number Original line Diff line number Diff line
@@ -5,7 +5,7 @@ package org.torproject.metrics.stats.ipv6servers;


/** Data object holding all relevant parts parsed from a (relay or bridge)
/** Data object holding all relevant parts parsed from a (relay or bridge)
 * server descriptor. */
 * server descriptor. */
class ParsedServerDescriptor {
class Ipv6ServerDescriptor {


  /** Hex-encoded SHA-1 server descriptor digest. */
  /** Hex-encoded SHA-1 server descriptor digest. */
  String digest;
  String digest;
+7 −7
Original line number Original line Diff line number Diff line
@@ -20,9 +20,9 @@ import java.time.ZoneId;
class Parser {
class Parser {


  /** Parse a (relay or bridge) server descriptor. */
  /** Parse a (relay or bridge) server descriptor. */
  ParsedServerDescriptor parseServerDescriptor(
  Ipv6ServerDescriptor parseServerDescriptor(
      ServerDescriptor serverDescriptor) {
      ServerDescriptor serverDescriptor) {
    ParsedServerDescriptor parsedDescriptor = new ParsedServerDescriptor();
    Ipv6ServerDescriptor parsedDescriptor = new Ipv6ServerDescriptor();
    parsedDescriptor.digest = serverDescriptor.getDigestSha1Hex();
    parsedDescriptor.digest = serverDescriptor.getDigestSha1Hex();
    for (String orAddress : serverDescriptor.getOrAddresses()) {
    for (String orAddress : serverDescriptor.getOrAddresses()) {
      if (StringUtils.countMatches(orAddress, ":") >= 2) {
      if (StringUtils.countMatches(orAddress, ":") >= 2) {
@@ -48,22 +48,22 @@ class Parser {
  }
  }


  /** Parse a relay network status. */
  /** Parse a relay network status. */
  ParsedNetworkStatus parseRelayNetworkStatusConsensus(
  Ipv6NetworkStatus parseRelayNetworkStatusConsensus(
      RelayNetworkStatusConsensus consensus) throws Exception {
      RelayNetworkStatusConsensus consensus) throws Exception {
    return this.parseStatus(true, consensus.getValidAfterMillis(),
    return this.parseStatus(true, consensus.getValidAfterMillis(),
        consensus.getStatusEntries().values());
        consensus.getStatusEntries().values());
  }
  }


  /** Parse a bridge network status. */
  /** Parse a bridge network status. */
  ParsedNetworkStatus parseBridgeNetworkStatus(BridgeNetworkStatus status)
  Ipv6NetworkStatus parseBridgeNetworkStatus(BridgeNetworkStatus status)
      throws Exception {
      throws Exception {
    return this.parseStatus(false, status.getPublishedMillis(),
    return this.parseStatus(false, status.getPublishedMillis(),
        status.getStatusEntries().values());
        status.getStatusEntries().values());
  }
  }


  private ParsedNetworkStatus parseStatus(boolean isRelay, long timestampMillis,
  private Ipv6NetworkStatus parseStatus(boolean isRelay, long timestampMillis,
      Iterable<NetworkStatusEntry> entries) {
      Iterable<NetworkStatusEntry> entries) {
    ParsedNetworkStatus parsedStatus = new ParsedNetworkStatus();
    Ipv6NetworkStatus parsedStatus = new Ipv6NetworkStatus();
    parsedStatus.isRelay = isRelay;
    parsedStatus.isRelay = isRelay;
    parsedStatus.timestamp = Instant.ofEpochMilli(timestampMillis)
    parsedStatus.timestamp = Instant.ofEpochMilli(timestampMillis)
        .atZone(ZoneId.of("UTC")).toLocalDateTime();
        .atZone(ZoneId.of("UTC")).toLocalDateTime();
@@ -77,7 +77,7 @@ class Parser {
      if (!entry.getFlags().contains("Running")) {
      if (!entry.getFlags().contains("Running")) {
        continue;
        continue;
      }
      }
      ParsedNetworkStatus.Entry parsedEntry = new ParsedNetworkStatus.Entry();
      Ipv6NetworkStatus.Entry parsedEntry = new Ipv6NetworkStatus.Entry();
      parsedEntry.digest = entry.getDescriptor().toLowerCase();
      parsedEntry.digest = entry.getDescriptor().toLowerCase();
      if (isRelay) {
      if (isRelay) {
        parsedEntry.guard = entry.getFlags().contains("Guard");
        parsedEntry.guard = entry.getFlags().contains("Guard");
+3 −3
Original line number Original line Diff line number Diff line
@@ -28,7 +28,7 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.Collection;


@RunWith(Parameterized.class)
@RunWith(Parameterized.class)
public class ParsedNetworkStatusTest {
public class Ipv6NetworkStatusTest {


  /** Provide test data. */
  /** Provide test data. */
  @Parameters
  @Parameters
@@ -102,7 +102,7 @@ public class ParsedNetworkStatusTest {
    for (Descriptor descriptor
    for (Descriptor descriptor
        : DescriptorSourceFactory.createDescriptorParser().parseDescriptors(
        : DescriptorSourceFactory.createDescriptorParser().parseDescriptors(
        sb.toString().getBytes(), new File(this.fileName), this.fileName)) {
        sb.toString().getBytes(), new File(this.fileName), this.fileName)) {
      ParsedNetworkStatus parsedNetworkStatus;
      Ipv6NetworkStatus parsedNetworkStatus;
      if (descriptor instanceof RelayNetworkStatusConsensus) {
      if (descriptor instanceof RelayNetworkStatusConsensus) {
        parsedNetworkStatus = new Parser().parseRelayNetworkStatusConsensus(
        parsedNetworkStatus = new Parser().parseRelayNetworkStatusConsensus(
            (RelayNetworkStatusConsensus) descriptor);
            (RelayNetworkStatusConsensus) descriptor);
@@ -119,7 +119,7 @@ public class ParsedNetworkStatusTest {
      assertEquals(this.description, this.running, parsedNetworkStatus.running);
      assertEquals(this.description, this.running, parsedNetworkStatus.running);
      if (null != this.digest) {
      if (null != this.digest) {
        boolean foundEntry = false;
        boolean foundEntry = false;
        for (ParsedNetworkStatus.Entry parsedEntry
        for (Ipv6NetworkStatus.Entry parsedEntry
            : parsedNetworkStatus.entries) {
            : parsedNetworkStatus.entries) {
          if (this.digest.equals(parsedEntry.digest)) {
          if (this.digest.equals(parsedEntry.digest)) {
            assertEquals(this.description, this.guard, parsedEntry.guard);
            assertEquals(this.description, this.guard, parsedEntry.guard);
Loading