diff options
author | Giovanni Conte <gconte@cisco.com> | 2019-03-04 15:53:41 +0100 |
---|---|---|
committer | karthik <kmanivannan@maprtech.com> | 2019-03-08 13:38:17 -0800 |
commit | 75ca5238e627e8d8612d56f654da06992837f6af (patch) | |
tree | 312b22296ca4f27746281df84d087b4ea1fe051f | |
parent | 624634d88ab870e3edb1648743097242522e58d6 (diff) |
DRILL-7054: timestamp in milliseconds
closes #1665
4 files changed, 15 insertions, 4 deletions
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/pcap/PcapRecordReader.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/pcap/PcapRecordReader.java index aef56a307..08f501f76 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/pcap/PcapRecordReader.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/pcap/PcapRecordReader.java @@ -242,6 +242,9 @@ public class PcapRecordReader extends AbstractRecordReader { case "timestamp": setTimestampColumnValue(packet.getTimestamp(), pci, count); break; + case "timestamp_micro": + setLongColumnValue(packet.getTimestampMicro(), pci, count); + break; case "network": setIntegerColumnValue(networkType, pci, count); break; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/pcap/decoder/Packet.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/pcap/decoder/Packet.java index 01d430e3f..8e6a81b57 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/pcap/decoder/Packet.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/pcap/decoder/Packet.java @@ -40,6 +40,7 @@ public class Packet { // guint32 orig_len; // actual length of packet */ // } pcaprec_hdr_t; private long timestamp; + private long timestampMicro; private int originalLength; protected byte[] raw; @@ -161,6 +162,10 @@ public class Packet { return timestamp; } + public long getTimestampMicro() { + return timestampMicro; + } + public int getPacketLength() { return packetLength; } @@ -384,16 +389,17 @@ public class Packet { } private void decodePcapHeader(final byte[] header, final boolean byteOrder, final int maxLength, final int offset) { - timestamp = getTimestamp(header, byteOrder, offset); + timestampMicro = getTimestampMicro(header, byteOrder, offset); + timestamp = timestampMicro / 1000L; originalLength = getIntFileOrder(byteOrder, header, offset + PacketConstants.ORIGINAL_LENGTH_OFFSET); packetLength = getIntFileOrder(byteOrder, header, offset + PacketConstants.ACTUAL_LENGTH_OFFSET); Preconditions.checkState(originalLength < maxLength, "Packet too long (%d bytes)", originalLength); } - private long getTimestamp(final byte[] header, final boolean byteOrder, final int offset) { - return getIntFileOrder(byteOrder, header, offset + PacketConstants.TIMESTAMP_OFFSET) * 1000L + - getIntFileOrder(byteOrder, header, offset + PacketConstants.TIMESTAMP_MICRO_OFFSET) / 1000L; + private long getTimestampMicro(final byte[] header, final boolean byteOrder, final int offset) { + return getIntFileOrder(byteOrder, header, offset + PacketConstants.TIMESTAMP_OFFSET) * 1000000L + + getIntFileOrder(byteOrder, header, offset + PacketConstants.TIMESTAMP_MICRO_OFFSET); } private void decodeEtherPacket() { diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/pcap/schema/Schema.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/pcap/schema/Schema.java index 6c03f55bf..07ecd4b17 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/pcap/schema/Schema.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/pcap/schema/Schema.java @@ -35,6 +35,7 @@ public class Schema { columns.add(new ColumnDto("type", PcapTypes.STRING)); columns.add(new ColumnDto("network", PcapTypes.INTEGER)); columns.add(new ColumnDto("timestamp", PcapTypes.TIMESTAMP)); + columns.add(new ColumnDto("timestamp_micro", PcapTypes.LONG)); columns.add(new ColumnDto("src_ip", PcapTypes.STRING)); columns.add(new ColumnDto("dst_ip", PcapTypes.STRING)); columns.add(new ColumnDto("src_port", PcapTypes.INTEGER)); diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/store/pcap/TestPcapDecoder.java b/exec/java-exec/src/test/java/org/apache/drill/exec/store/pcap/TestPcapDecoder.java index 63e11ac55..f0e89d9f7 100644 --- a/exec/java-exec/src/test/java/org/apache/drill/exec/store/pcap/TestPcapDecoder.java +++ b/exec/java-exec/src/test/java/org/apache/drill/exec/store/pcap/TestPcapDecoder.java @@ -75,6 +75,7 @@ public class TestPcapDecoder extends BaseTestQuery { assertEquals("/192.168.0.2", p.getDst_ip().toString()); assertEquals(161, p.getSrc_port()); assertEquals(0, p.getDst_port()); + assertEquals(0, p.getTimestampMicro()); } private static void writeHeader(DataOutputStream out) throws IOException { |