gpsd-dev
[Top][All Lists]
Advanced

[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),








reply via email to

[Prev in Thread] Current Thread [Next in Thread]