Feathercoin daemon and wallet production version 0.17.0.2

[DEV] Fix automatic unit tests Feathercoin 0.9.6 [Completed 29th Jan 2017]


  • Moderators | Tip wrapper

    @Wellenreiter A test to cover the Block 2 and 4 issue is a very good idea. It should be relatively easy for @Lizhi to do, with his experience of the code and information in the tests thread and commits.

    I propose we remove the Block 2 and 4 compatibility unless there is a (auto test suite) test and it passes. I would help create one. Obviously we would also need @Aciddude , it shouldn’t be that difficult …

    I have created an issue. https://github.com/FeatherCoin/Feathercoin/issues/151


  • Moderators | Tip Wellenreiter

    @wrapper said in [DEV] Fix Build Auto Tests Feathercoin 0.9.6 [Completed]:

    @Wellenreiter A test to cover the Block 2 and 4 issue is a very good idea. It should be relatively easy for @Lizhi to do, with his experience of the code and information in the tests thread and commits.

    I propose we remove the Block 2 and 4 compatibility unless there is a (auto test suite) test and it passes. I would help create one. Obviously we would also need @Aciddude , it shouldn’t be that difficult …

    I have created an issue. https://github.com/FeatherCoin/Feathercoin/issues/151

    I disagree with the removal of the Block 2/Block 4 code. 0.9.6 is planned to be the ‘bridge’ between the old and new block version, so it is essential, that it accepts both block versions.
    We can do a manual test in a testnet setup to check for this release and build the automated tests for the next releases. See my comment on Github for that.

    https://github.com/FeatherCoin/Feathercoin/issues/151


  • Moderators | Tip wrapper

    Issue
    I am particularly concerned that we will get support issues if we implement the “Bridge” Feathercoin Block 2/Block 4 code forward compatibility, under the current circumstances.

    Mode of success
    I would agree we could release a Tested version, if there were an official Feathercoin 0.11 version binary out. But current there is a possibility of the current 0.11 development version being applied to mining.

    Causes of Failure
    People have taken the highest number as the official version of Feathercoin in the past, causing us major problems before.

    Symptom of failure
    I see this as an accident waiting to happen, so if we go ahead I won’t be able to “do support issues” that arise.

    Suggested Way forward

    Make sure there are no ways to download a “Unofficial” Feathercoin 0.11 Binary and @Lizhi promises not to deploy test or development versions of Feathercoin 0.11 until is ready for release.

    We create a higher version of Feathercoin 0.11 (i.e. 0.11.1 so any rouge binaries are not the highest release number) , which is also a Bridge version and does not try trigger a block 4 upgrade, We can then test that operates on the network ready for the “Official 0.11 release” which would allow the block change trigger…

    When we change to Official 0.11 the block 4 change can be well publicized auto fork /0.8 upgrade essential fork.


  • Moderators | Tip Wellenreiter

    The Bridge functionality is tested already, and I’d say we tested it the hard way. Last spring we had Lizhi’s 0.11.2 code starting to create Block v4 which was rejected by the 0.8.7 and 0.9.3 versions, which in turn continued to creat Block version 2, that was rejected by the 0.11.2.
    The result was the fork of the BC we faced.
    Ghostlander impleneted a patch for 0.8.7 into 0.8.7.3 to accept also block version 4 and Lizhi did the similar thing to 0.9.3.2.
    The BC converted after these patched releases where rolled out.
    I think, that was the ultimative proof, that the code is working.

    Additionally Lizhi modifed the 0.11.X code to also accept Block V2 blocks.

    I think we are safe here.

    Now we release 0.9.6 and officially name it a bridge release to motivate users to migrate a bit faster. 😉

    Regarding Lizhi’s development versions, I currently have a close look on Github and check that the production flag is set to false for any new merge/push that is made to the code.
    This generates a warning in the gui and the logs that the release is non-production and should not be used for mining.

    I think we hardly can do more, as anybody can fork the code, do any modification and compile/run a dangerous client.

    We can’t avoid that by implementing more complex administrative measures. As long as the big majority of nodes is using the ‘official’ code, the infrastructure should cover any errors injected by a single or small number of misbehaving clients. That is part of the distributed BC.


  • Moderators | Tip AcidD

    Staying on topic 😉

    I’ve moved this back to “In Progress” - Explanation below:

    When you build Feathercoin-QT with the tests the following binaries get built

    /src/feathercoind
    /src/test/test_bitcoin (the feathercoind test)

    /src/qt/feathercoin-qt
    /src/qt/test/test_feathercoin-qt (the gui test)

    I apologise but this slipped my mind and while the test program builds with no complaints…we have some interesting stuff in the console print out when we run ./test_feathercoin-qt

    see below:

    [email protected]:~/Feathercoin/build/bin$ ./test_bitcoin-qt 
    ********* Start testing of URITests *********
    Config: Using QtTest library 5.5.1, Qt 5.5.1 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 5.4.0 20160609)
    PASS   : URITests::initTestCase()
    FAIL!  : URITests::uriTests() 'GUIUtil::parseBitcoinURI(uri, &rv)' returned FALSE. ()
       Loc: [uritests.cpp(16)]
    PASS   : URITests::cleanupTestCase()
    Totals: 2 passed, 1 failed, 0 skipped, 0 blacklisted
    ********* Finished testing of URITests *********
    ********* Start testing of PaymentServerTests *********
    Config: Using QtTest library 5.5.1, Qt 5.5.1 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 5.4.0 20160609)
    PASS   : PaymentServerTests::initTestCase()
    QDEBUG : PaymentServerTests::paymentServerTests() PaymentServer::initNetManager : No active proxy server found.
    QDEBUG : PaymentServerTests::paymentServerTests() PaymentServer::processPaymentRequest : Secure payment request from  "testmerchant.org"
    QDEBUG : PaymentServerTests::paymentServerTests() PaymentRequestPlus::getMerchant : Payment request: certificate expired or not yet active:  QSslCertificate("3", "03", "LxHILx+N3qwVoAcCmQ5cyw==", (), ("Expired Test Merchant"), QMap(), QDateTime(2013-02-23 21:26:43.000 UTC Qt::TimeSpec(UTC)), QDateTime(2013-02-24 21:26:43.000 UTC Qt::TimeSpec(UTC)))
    QDEBUG : PaymentServerTests::paymentServerTests() PaymentServer::processPaymentRequest : Insecure payment request to  "6sMH7m11qaUoZX2coz5oe33R64eGHQCAKi"
    QDEBUG : PaymentServerTests::paymentServerTests() PaymentRequestPlus::getMerchant : Payment request: certificate expired or not yet active:  QSslCertificate("3", "03", "LxHILx+N3qwVoAcCmQ5cyw==", (), ("Expired Test Merchant"), QMap(), QDateTime(2013-02-23 21:26:43.000 UTC Qt::TimeSpec(UTC)), QDateTime(2013-02-24 21:26:43.000 UTC Qt::TimeSpec(UTC)))
    QDEBUG : PaymentServerTests::paymentServerTests() PaymentServer::processPaymentRequest : Secure payment request from  "testmerchant8.org"
    QDEBUG : PaymentServerTests::paymentServerTests() PaymentRequestPlus::getMerchant : Payment request: certificate expired or not yet active:  QSslCertificate("3", "06", "MiZaQ+g9lSHZGuHWkXZG+g==", (), ("Payment Request Intermediate 5"), QMap(), QDateTime(2013-02-23 22:59:51.000 UTC Qt::TimeSpec(UTC)), QDateTime(2013-02-24 22:59:51.000 UTC Qt::TimeSpec(UTC)))
    QDEBUG : PaymentServerTests::paymentServerTests() PaymentServer::processPaymentRequest : Insecure payment request to  "6sMH7m11qaUoZX2coz5oe33R64eGHQCAKi"
    QDEBUG : PaymentServerTests::paymentServerTests() PaymentRequestPlus::getMerchant : Payment request: certificate expired or not yet active:  QSslCertificate("3", "06", "MiZaQ+g9lSHZGuHWkXZG+g==", (), ("Payment Request Intermediate 5"), QMap(), QDateTime(2013-02-23 22:59:51.000 UTC Qt::TimeSpec(UTC)), QDateTime(2013-02-24 22:59:51.000 UTC Qt::TimeSpec(UTC)))
    QDEBUG : PaymentServerTests::paymentServerTests() PaymentRequestPlus::getMerchant : SSL error:  certificate signature failure
    QDEBUG : PaymentServerTests::paymentServerTests() PaymentServer::processPaymentRequest : Insecure payment request to  "6sMH7m11qaUoZX2coz5oe33R64eGHQCAKi"
    QDEBUG : PaymentServerTests::paymentServerTests() PaymentRequestPlus::getMerchant : SSL error:  certificate signature failure
    QDEBUG : PaymentServerTests::paymentServerTests() PaymentRequestPlus::getMerchant : SSL error:  unable to get local issuer certificate
    QDEBUG : PaymentServerTests::paymentServerTests() PaymentServer::processPaymentRequest : Insecure payment request to  "6sMH7m11qaUoZX2coz5oe33R64eGHQCAKi"
    QDEBUG : PaymentServerTests::paymentServerTests() PaymentRequestPlus::getMerchant : SSL error:  unable to get local issuer certificate
    PASS   : PaymentServerTests::paymentServerTests()
    PASS   : PaymentServerTests::cleanupTestCase()
    Totals: 3 passed, 0 failed, 0 skipped, 0 blacklisted
    ********* Finished testing of PaymentServerTests *********
    [email protected]:~/Feathercoin/build/bin$
    

    I’ll see if I can put in the time to get this working before the 0.9.6 release.


  • Moderators | Tip Wellenreiter

    I don’t think that is a problem with the test code, it complains about the SSL certificate missing. It does not fail.
    I’ve never checked, where SSL really is used, but installing the correct certificate should make the test work without complains.


  • Moderators | Tip AcidD

    @Wellenreiter said in [DEV] Fix automatic unit tests Feathercoin 0.9.6 [In Progress]:

    I don’t think that is a problem with the test code, it complains about the SSL certificate missing. It does not fail.
    I’ve never checked, where SSL really is used, but installing the correct certificate should make the test work without complains.

    Yes you’re 100% correct. you have to actually pass it a valid certificate.

    The URI tests I’ve fixed. it’s a very basic bitcoin:// to feathercoin:// will submit a PR soon.

    once the URI test is fixed then all our tests are passing 100%.


  • Moderators | Tip AcidD

    URI tests fixed in PR https://github.com/FeatherCoin/Feathercoin/pull/154

    Marked as completed: 29-01-2017


  • Moderators | Tip wrapper

    I’ll start a thread to cover the 0.11 tests, when we start moving this work over…


  • Moderators | Tip AcidD

    @wrapper said in [DEV] Fix automatic unit tests Feathercoin 0.9.6 [Completed 29th Jan 2017]:

    I’ll start a thread to cover the 0.11 tests, when we start moving this work over…

    When I fixed the 0.9.6 tests I had a look at the code for Bitcoins 0.11 tests, there’s a few things that have changed so I doubt any of my test fixes will work for 0.11…not 100% sure tho.


  • Moderators | Tip Wellenreiter

    When I fixed the 0.9.6 tests I had a look at the code for Bitcoins 0.11 tests, there’s a few things that have changed so I doubt any of my test fixes will work for 0.11…not 100% sure tho.

    As long as the data used is the same, it should be ok.