def test_time_string_fidelity(self): it1 = NTP4Time() ntp_str = it1.to_string() it2 = NTP4Time.from_string(ntp_str) self.assertEquals(it1.seconds,it2.seconds) self.assertTrue(np.abs(it1.useconds - it2.useconds) <= 1)
def test_ntp_compatability(self): unix_day = NTP4Time(datetime.datetime(1970, 1, 1)) self.assertEquals(unix_day.era, 0) self.assertEquals(unix_day.seconds, 2208988800) utc_day = NTP4Time(datetime.datetime(1972, 1, 1)) self.assertEquals(utc_day.era, 0) self.assertEquals(utc_day.seconds, 2272060800) millen_day = NTP4Time(datetime.datetime(2000, 1, 1)) self.assertEquals(millen_day.era, 0) self.assertEquals(millen_day.seconds, 3155673600) ntp_era1 = NTP4Time(datetime.datetime(2036, 2, 8)) self.assertEquals(ntp_era1.era, 1) self.assertEquals(ntp_era1.seconds, 63104) self.assertEquals(ntp_era1.to_unix(), 2086041600.)
def _extract_row(self, pkt, cols): row = [] for c in cols: for ch in pkt['channels']: if ch['chan'] == c: row.append(tuple(ch['data'])) break orbtime = pkt['channels'][0]['time'] row.append(NTP4Time(orbtime).to_ntp64()) return row
def acquire_samples(self, max_samples=0): log.debug('CDIP_DataAgentPlugin.acquire_samples') # Read server, extract last sample. data = requests.get(self.streaming_args.url) m = None for m in re.finditer(pattern, data.text, flags=re.MULTILINE): pass if not m: log.warning('CDIP_DataAgentPlugin.acquire_samples: No data found.') return None year = int(m.group(1)) month = int(m.group(2)) day = int(m.group(3)) hour = int(m.group(4)) minute = int(m.group(5)) Hs = float(m.group(6)) Tp = float(m.group(7)) Dp = int(m.group(8)) Ta = float(m.group(9)) Temp = float(m.group(10)) # Create sample. # [ntp64_ts, Hs, Tp, Dp, Ta, Temp] # ['\xdb\x07\x00,\x00\x00\x00\x00', 2.66, 9.09, 328, 6.67, 12.2] dt = datetime.datetime(year, month, day, hour, minute) ts = NTP4Time(dt).to_ntp64() sample = [ts, Hs, Tp, Dp, Ta, Temp] # Compare to last reading. if self.last_sample == sample: log.debug('CDIP_DataAgentPlugin.acquire_samples: No new data.') return None # Update, pack and return. log.debug('CDIP_DataAgentPlugin.acquire_samples: Got new data.') log.debug('CDIP data: %s' % str(sample)) self.last_sample = sample sample_desc = dict(cols=["time", "Hs", "Tp", "Dp", "Ta", "Temp"], data=[sample]) return sample_desc
def acquire_samples(self, max_samples=0): if len(self.samples) <= self.sample_index: log.warn("Out of samples at index %s", self.sample_index) self.sample_index += 1 return None data_row = self.samples[self.sample_index] self.sample_index += 1 sample = [ NTP4Time(data_row["time"]).to_ntp64(), tuple(data_row["sample_vector"]) ] sample_desc = dict(cols=["time", "sample_vector"], coltypes=dict(sample_vector="10i2"), data=[sample]) print sample_desc return sample_desc
def _get_data_packet(self, index, num_rows=1): """ Return a data packet with number of samples. The index indicates the offset from the starting timestamp, 10 sec per sample.""" base_ts = 1000000000 index_ts = base_ts + 10 * index # Core samples as provided by agent.acquire_samples sample_list = [] for i in xrange(num_rows): ts = index_ts + i * 10 sample = [ NTP4Time(ts).to_ntp64(), float(index + i), random.random() * 100 ] sample_list.append(sample) sample_desc = dict(cols=["time", "var1", "random1"], data=sample_list) packet = DataPacketBuilder.build_packet_from_samples( sample_desc, resource_id="ds_id", stream_name="basic_streams") return packet
def test_unix_time_fidelity(self): ts = time.time() it1 = NTP4Time(ts) ts_2 = it1.to_unix() self.assertTrue(np.abs(ts - ts_2) <= 1e-3)
def test_time_ntp_fidelity(self): it1 = NTP4Time() ntp_ts = it1.to_ntp64() it2 = NTP4Time.from_ntp64(ntp_ts) self.assertEquals(it1.seconds,it2.seconds) self.assertTrue(np.abs(it1.useconds - it2.useconds) <= 1)