[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [gpsd-dev] test_json regression failures
From: |
address@hidden |
Subject: |
Re: [gpsd-dev] test_json regression failures |
Date: |
Wed, 17 Dec 2014 19:38:50 +0100 |
Hello,
the tests failed in pseudonmea generation of the GPGSA sentence.
In pseudenmea.c at line 175 and line 179, the sats for the GPGSA message are
taken simply from
session->sats_used[i]
This structure is only valid, if NMEA_ENABLE is true.
I think, this info should be taken from
session->gpsdata.skyview[l1].used
and
session->gpsdata.skyview[l1].PRN
The driver_nmea2000.c and many other drives do no populate
session->sats_used[i]
But my assumption was wrong, as most SIRF receiver report different 'used'
sat's in GPGSA and GPGGA.
Now i populated
session->gpsdata.skyview[l1].used
and
session->sats_used[i]
I am aware of the fact, that you now can not compile a gpsd for NMEA2000 only
without having NMEA0183 enabled too. In fact, the
session->sats_used[i]
should be always in place, and i assume, that may other driver fail with
pseudonmea output, there is just no test case for it.
And i can not blame Eric for the change, as i have still no regression test for
the nmea2000 driver.
This is not so difficult, if i can rely on the virtual can driver "vcan" is
present in the system, and i use the canutils at the moment too.
Reinhard
-----Original-Nachricht-----
Betreff: [gpsd-dev] test_json regression failures
Datum: Wed, 17 Dec 2014 14:52:14 +0100
Von: Greg Troxel <address@hidden>
An: address@hidden
I ran regression tests lately, and found two problems. This is on
NetBSD 6 i386. These logs are the result of bisecting, so there are a
lot of missing revisions.
One of them caused failures of about 13 tests has been resolved.
Interestingly, a similar syndrome happened earlier:
CHECK.release-3.11:Regression test successful: no errors in 87 tests (0 not
found).
CHECK.release-3.11-76-g4fe4476:Regression test FAILED: 13 errors in 88 tests
total (0 not found).
CHECK.release-3.11-77-gb56fe6b:Regression test successful: no errors in 88
tests (0 not found).
CHECK.release-3.11-118-g51b6b93:Regression test successful: no errors in 88
tests (0 not found).
CHECK.release-3.11-139-g282691d:Regression test successful: no errors in 88
tests (0 not found).
CHECK.release-3.11-140-gc1ba751:Regression test successful: no errors in 88
tests (0 not found).
CHECK.release-3.11-152-gfa02bd8:Regression test successful: no errors in 88
tests (0 not found).
CHECK.release-3.11-153-gcde62f4:Regression test successful: no errors in 88
tests (0 not found).
CHECK.release-3.11-154-g0a36cb1:Regression test successful: no errors in 88
tests (0 not found).
CHECK.release-3.11-155-g76118dd:Regression test successful: no errors in 88
tests (0 not found).
CHECK.release-3.11-156-gf18624a:Regression test successful: no errors in 88
tests (0 not found).
CHECK.release-3.11-157-gd6bff39:Regression test FAILED: 13 errors in 88 tests
total (0 not found).
CHECK.release-3.11-160-ga9d7072:Regression test FAILED: 16 errors in 88 tests
total (0 not found).
CHECK.release-3.11-161-gd695f3e:Regression test successful: no errors in 88
tests (0 not found).
CHECK.release-3.11-162-g2d6a223:Regression test successful: no errors in 88
tests (0 not found).
The other problem is currently in a broken state. The assert failure
seems to be about being off 3600 seconds. (I ran these tests with TZ
unset, and defaulting to EST.)
It looks like 152 broke this, and 157 fixed it, and then 161 broke it again.
CHECK.release-3.11:
CHECK.release-3.11-76-g4fe4476:
CHECK.release-3.11-77-gb56fe6b:
CHECK.release-3.11-118-g51b6b93:
CHECK.release-3.11-139-g282691d:
CHECK.release-3.11-140-gc1ba751:
CHECK.release-3.11-141-gd4fd3d2:
CHECK.release-3.11-142-g73aba2d:
CHECK.release-3.11-143-g64b9a5d:
CHECK.release-3.11-144-g4df99fc:
CHECK.release-3.11-145-g9c8590e:
CHECK.release-3.11-146-gf25e639:
CHECK.release-3.11-147-g65000a4:
CHECK.release-3.11-148-g4e21845:
CHECK.release-3.11-149-g91a2a0a:
CHECK.release-3.11-150-g1dc4b36:
CHECK.release-3.11-151-gfcbba18:
CHECK.release-3.11-152-gfa02bd8: JSON unit test 'time' real attribute eval
failed, value = 1119165161.890000.
CHECK.release-3.11-153-gcde62f4: JSON unit test 'time' real attribute eval
failed, value = 1119165161.890000.
CHECK.release-3.11-154-g0a36cb1: JSON unit test 'time' real attribute eval
failed, value = 1119165161.890000.
CHECK.release-3.11-155-g76118dd: JSON unit test 'time' real attribute eval
failed, value = 1119165161.890000.
CHECK.release-3.11-156-gf18624a: JSON unit test 'time' real attribute eval
failed, value = 1119165161.890000.
CHECK.release-3.11-157-gd6bff39:
CHECK.release-3.11-160-ga9d7072:
CHECK.release-3.11-161-gd695f3e: JSON unit test 'time' real attribute eval
failed, value = 1119165161.890000.
CHECK.release-3.11-162-g2d6a223: JSON unit test 'time' real attribute eval
failed, value = 1119165161.890000.
Here's 161. I don't understand the ratioanle for the details of the
commit; it seems to do 3 separate things.
commit d695f3e71a1d9dfdd9840b2533f86f491a1bfda5
Author: Reinhard Arlt <address@hidden>
Date: Mon Dec 15 21:53:09 2014 +0100
Fix pseudonmea again.
diff --git a/driver_nmea2000.c b/driver_nmea2000.c
index b1a0ed1..7f2474c 100644
--- a/driver_nmea2000.c
+++ b/driver_nmea2000.c
@@ -377,6 +377,7 @@ static gps_mask_t hnd_129540(unsigned char *bu, int len,
PGN *pgn, struct gps_de
session->gpsdata.satellites_visible = (int)bu[2];
memset(session->gpsdata.skyview, '\0', sizeof(session->gpsdata.skyview));
+ memset(session->sats_used, 0, sizeof(session->sats_used));
l2 = 0;
for (l1=0;l1<session->gpsdata.satellites_visible;l1++) {
int svt;
@@ -390,13 +391,14 @@ static gps_mask_t hnd_129540(unsigned char *bu, int len,
PGN *pgn, struct gps_de
svt = (int)(bu[3+12*l1+11] & 0x0f);
- session->gpsdata.skyview[l1].elevation = (int) (round(elev));
- session->gpsdata.skyview[l1].azimuth = (int) (round(azi));
+ session->gpsdata.skyview[l1].elevation = (short) (round(elev));
+ session->gpsdata.skyview[l1].azimuth = (short) (round(azi));
session->gpsdata.skyview[l1].ss = snr;
- session->gpsdata.skyview[l1].PRN = (int)bu[3+12*l1+0];
+ session->gpsdata.skyview[l1].PRN = (short)bu[3+12*l1+0];
session->gpsdata.skyview[l1].used = false;
if ((svt == 2) || (svt == 5)) {
session->gpsdata.skyview[l1].used = true;
+ session->sats_used[l2] = (unsigned short)
session->gpsdata.skyview[l1].PRN;
l2 += 1;
}
}
diff --git a/pseudonmea.c b/pseudonmea.c
index 8e85a9a..c01920c 100644
--- a/pseudonmea.c
+++ b/pseudonmea.c
@@ -172,7 +172,7 @@ static void gpsd_binary_quality_dump(struct gps_device_t
*session,
"$GPGSA,%c,%d,", 'A', session->gpsdata.fix.mode);
j = 0;
for (i = 0; i < session->device_type->channels; i++) {
-#if 0
+#if 1
if (session->sats_used[i] > 0) {
bufp += strlen(bufp);
(void)snprintf(bufp, len - strlen(bufp),