package au.gov.amsa.mariweb;
import static org.junit.Assert.assertEquals;
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.zip.GZIPInputStream;
import org.junit.Test;
import rx.functions.Action1;
import au.gov.amsa.ais.AisMessage;
import au.gov.amsa.ais.AisNmeaMessage;
import au.gov.amsa.util.nmea.NmeaMessage;
import au.gov.amsa.util.nmea.NmeaMessageParser;
import au.gov.amsa.util.nmea.NmeaUtil;
public class BackupReaderTest {
@Test
public void testRowsInSampleParseOk() {
InputStream is = OperatorExtractValuesFromInsertStatementTest.class
.getResourceAsStream("/mariweb-backup-sample.txt");
BackupReader.getNmea(is).subscribe(new Action1<String>() {
@Override
public void call(String line) {
System.out.println(line);
NmeaUtil.parseNmea(line);
}
});
}
@Test
public void testFirstRowFromActualSample() {
InputStream is = OperatorExtractValuesFromInsertStatementTest.class
.getResourceAsStream("/mariweb-backup-sample.txt");
String nmea = BackupReader.getNmea(is).toBlocking().first();
System.out.println(nmea);
assertEquals(
"\\s:Lockhart River,c:1325980876,a:1383734682000*2D\\!AIVDM,1,1,,B,1E@LR2200Rbrdgqe@Pl68S4H0000,0*07",
nmea);
NmeaMessage n = new NmeaMessageParser().parse(nmea);
assertEquals("1383734682000", n.getTags().get("a"));
assertEquals("1325980876", n.getTags().get("c"));
AisMessage m = new AisNmeaMessage(nmea).getMessage();
assertEquals("Lockhart River", m.getSource());
assertEquals(1, m.getMessageId());
assertEquals("69", NmeaUtil.getChecksum("s:Lockhart River,c:1325980876,at:1383734682"));
}
@Test
public void testExtractValuesForMultilineMessage() {
List<String> list = BackupReader
.getNmea(
new ByteArrayInputStream(
"INSERT INTO `ITU411_data` VALUES (11861,'2013-04-16 01:35:43','2013-04-16 01:35:43','203.9.160.33:4001','IN','!AIVDM,2,1,3,B,58Hu?002;ASoUH4OF20P4V1<PV22222222222216O@W>O4E6NEB0FH43,0*6C|!AIVDM,2,2,3,B,jCU888888888880,2*60','\\\\i:|D=0|T=41380.0664713773|P=203.9.160.33:4001|R=IN|*36\\\\',5,0,'563040000',0,9127485,'9VAG5 ','HAI SHI ',70,250,39,14,31,1,'01100630',8.5,'HAY POINT ',0)"
.getBytes())).toList().toBlocking().single();
System.out.println(list);
assertEquals(2, list.size());
}
public static void main(String[] args) throws IOException {
System.out.println("running");
System.out.println(BackupReader
.getNmea(new GZIPInputStream(new FileInputStream("/media/an/ITU_20150101.bu.gz")))
.count().toBlocking().single());
}
}