Commit 27f574bc authored by Julien Muchembled's avatar Julien Muchembled
Browse files

Revert "zodbpickle: v↑ (1.0.4 -> 2.0.0)"

This reverts commit 1c2d1c0a.
because NEO is not ready for such change.
parent 34ebf8b5
master 1.0 ZODB/keep-only-latest-index-option ZODB3 armin arnau arnau-RD-future arnau-RD-py3-master arnau-zope4py2 backup bbu cert-auto check_system_gfortran cmf_upgrade_versions cythonplus default_software_type_default django-tutorial drupal-lamp e2e e2e-bbu e2e-ors erp5-component erp5-zope2-tests extend-erp5-wcfs-integration-tests failover-backend feat/buildout_testing_python3_new feat/debian11 feat/erp5-incremenatal-repozo feat/fix_kvm_wipe feat/inkscape-1.3 feat/ipv6_range feat/keep-zodb-while-restoring feat/kvm-import-nice feat/libreoffice-24.2 feat/libreoffice-7.6 feat/mariabackup-mroonga feat/mariadb-10.11 feat/mariadb-10.11-unsafe feat/mariadb-10.11bis feat/mariadb-10.11ter feat/mariadb-10.5 feat/mariadb-10.6 feat/mariadb-11.4 feat/mariadb-11.4-unsafe feat/nxdbom feat/obs_test feat/openssl-3.0 feat/openssl-3.0-bis feat/openssl-3.0-py2 feat/quick-zodb-recover feat/rapid-cdn-backend-h2 feat/telegraf-version-up feat/theia-1.24.0 feat/theia-bash-completions feat/version_up_ldap_graphviz feat/zope-testrunner feat/zope5.11-pygolang-zodbtools fix-1.0.190.1 fix-1.0.207.1 fix-1.0.240.1 fix-libdb fix/erp5-haproxy-wait-reload fix/erp5_remove_unused_eggs fix/gcc_min_version fix/golang-20 fix/haproxy-up fix/netrc-parse-error fix/slapos.toolbox-py2 fix/version_up fix_kvm_monitor for_testrunner_1 freetype-2.13.3 gitlab-v14.10 goodbye-openssl-1.0.x html5as html5as-base html5as-test html5as-tutorial intentially_broken_cloudooo jm json-api kaz kvm_SR_download_debian kvm_auto_reboot logrotate/truncate mariabackup-restic master+ZODB4-wc2 matomo-tutorial moodle neo-reflink netframe nextcloud nextcloud-fix-tests nirina_tutorial nofile old-mail-server ors ors-amarisoft/aw2s ors-dev ors-dev2 ors-dev3 ors-dev3-bak ors-dnsmasq ors-fake-lteenb ors-handover ors-oran-ru ors-oran-ru-toolbox ors-promise ors-ptt ors-publish ors-ssb-nr-arfcn ors-test ors-tests ors-ue osc patrowl-dev postgres public-deltachat-core push-to-wendolin rdiff-backup-no-compression remove_inkscape remove_tempstorage repman-test revert-e7b48c0b ru-alarms scalability_crash_mariadb signature simpleran-dev slapos-node_python3.9 slapos_master_load_balancer_test sozu-dev systemd-python tdd_config_5ms_6ul_3dl telecom-matomo-hotfix test-fix-erp5-resiliency textsynth theia-restic tomo_openradio_e2e_testing top-stand1 ttrn upgrade_erp5_test_updated upgrade_responses vanilla-slapos webdav wipapi wrapper wrapper-atomic xy/lte-multiru y/wc2-next zope2py2-reorder-versions-priority zope2zope4py2 zope4 zope4py2-faketime zope4py3 zope4py3-bstr zope4py3-kaz 1.0.411 1.0.410 1.0.409 1.0.408 1.0.407 1.0.406 1.0.405 1.0.404 1.0.403 1.0.402 1.0.401 1.0.400 1.0.399 1.0.398 1.0.397 1.0.396 1.0.395 1.0.394 1.0.393 1.0.392 1.0.391 1.0.390 1.0.389 1.0.388 1.0.387 1.0.386 1.0.385 1.0.384 1.0.383 1.0.382 1.0.381 1.0.380 1.0.379 1.0.378 1.0.377 1.0.376 1.0.375 1.0.374 1.0.373 1.0.372 1.0.371 1.0.370 1.0.369 1.0.368 1.0.367 1.0.366 1.0.365 1.0.364.3 1.0.364.2 1.0.364.1 1.0.364 1.0.363.1 1.0.363 1.0.362 1.0.361 1.0.360 1.0.359 1.0.358 1.0.357 1.0.356 1.0.355 1.0.354 1.0.354-mariadb-replication-efc8bfe3c 1.0.354-mariadb-replication-8b12a75b5 1.0.353 1.0.352 1.0.351 1.0.350 1.0.349 1.0.348 1.0.347 1.0.346 1.0.345 1.0.344.1 1.0.344 1.0.343 1.0.342 1.0.341 1.0.340 1.0.339 1.0.338 1.0.337 1.0.336 1.0.335 1.0.334 1.0.333 1.0.332 1.0.331 1.0.330 1.0.329 1.0.328 1.0.327 1.0.326 1.0.325 1.0.324 1.0.323 1.0.322 1.0.321 1.0.320 1.0.319 1.0.318 1.0.317 1.0.316 1.0.315 1.0.314 1.0.313 1.0.312 1.0.311 1.0.310 1.0.309 1.0.308 1.0.307 1.0.306 1.0.305 1.0.304 1.0.303 1.0.302 1.0.301 1.0.300 1.0.299 1.0.298 1.0.297 1.0.296 1.0.295 1.0.294 1.0.293 1.0.292 1.0.291 1.0.290 1.0.289 1.0.288 1.0.287 1.0.286 1.0.285 1.0.284 1.0.283 1.0.282 1.0.281 1.0.280 1.0.279 1.0.278 1.0.277 1.0.276 1.0.275 1.0.274 1.0.273 1.0.272 1.0.271 1.0.270 1.0.269 1.0.268 1.0.267 1.0.266 1.0.265 1.0.264 1.0.263 1.0.262 1.0.261 1.0.260 1.0.259 1.0.258 1.0.257 1.0.256 1.0.255 1.0.254 1.0.253 1.0.252 1.0.251 1.0.250 1.0.249 1.0.248 1.0.247 1.0.246 1.0.245 1.0.244 1.0.243 1.0.242 1.0.241 1.0.240.1 1.0.240 1.0.239 1.0.238 1.0.237 1.0.236 1.0.235 1.0.234 1.0.233 1.0.232 1.0.231 1.0.230 1.0.229 1.0.228 1.0.227 1.0.226 1.0.225 1.0.224 1.0.223 1.0.222 1.0.221 1.0.220 1.0.219 1.0.218 1.0.217 1.0.216 1.0.215 1.0.214 1.0.213 1.0.212 1.0.211 1.0.210 1.0.209 1.0.208 1.0.207.1 1.0.207 1.0.206 1.0.205 1.0.204 1.0.203 1.0.202 1.0.201 1.0.200 1.0.199 1.0.198 1.0.197 1.0.196 1.0.195 1.0.194 1.0.193 1.0.192 1.0.191 1.0.190.1 1.0.190 1.0.189 1.0.188 1.0.187 1.0.186 1.0.185 1.0.184 1.0.183 1.0.182 1.0.181 1.0.180 1.0.179 1.0.178 1.0.177 1.0.176 1.0.175 1.0.174 1.0.173 1.0.172 1.0.171 1.0.170 1.0.169 1.0.168 1.0.167.10 1.0.167.9 1.0.167.8 1.0.167.7 1.0.167.6 1.0.167.5 1.0.167.4 1.0.167.3 1.0.167.2 1.0.167.1 1.0.167 1.0.166
No related merge requests found
Pipeline #11912 failed with stage
in 0 seconds
......@@ -151,7 +151,7 @@ pycurl = 7.43.0
setproctitle = 1.1.10
slapos.recipe.template = 4.4
transaction = 1.7.0
zodbpickle = 2.0.0
zodbpickle = 1.0.4
zodbtools = 0.0.0.dev4
cython-zstd = 0.2
python-dateutil = 2.7.3
......
  • @jm, any details?

  • Answering to myself: to see what is wrong @romain suggested to run my patch wrt all NEO testsuites and see what breaks. This way I ran NEO.UnitTest-Master, NEO.UnitTest-Master.ZODB5, NEO.UnitTest-Master.ZODB3, and NEO.UnitTest-Master.PyPy wrt slapos with my patch. The results I got are:

    NEO.UnitTest-Master-kirr: all PASS
    NEO.UnitTest-Master.ZODB5-kirr: all PASS
    NEO.UnitTest-Master.ZODB3-kirr: FAIL
    NEO.UnitTest-Master.PyPy-kirr: all PASS

    I looked inside ZODB3-related failures (as I too looked at failures when verifying my patch when pushing to @erp-component branch and looking into NEO failures after merging my patch to slapos master), and they are exactly the same failures that are already there failing for NEO with slapos without my patch:

    NEO.UnitTest-Master.ZODB3-kirr / SQLite failed with:

    FAIL: testBackupDelayedUnlockTransaction (neo.tests.threaded.testSSL.SSLReplicationTests)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/srv/slapgrid/slappart5/srv/testnode/dgb/soft/68fc043aba2ab2e43c30b3d4a422041a/parts/neoppod-repository/neo/tests/threaded/testReplication.py", line 56, in wrapper
        wrapped(self, backup)
      File "/srv/slapgrid/slappart5/srv/testnode/dgb/soft/68fc043aba2ab2e43c30b3d4a422041a/parts/neoppod-repository/neo/tests/threaded/testReplication.py", line 332, in testBackupDelayedUnlockTransaction
        self.assertTrue(msg.endswith('lag=ε'), msg)
    failureException: RUNNING; UP_TO_DATE=1; ltid=03db4f6382d99699 (2020-10-15 13:55:30.667958)
    
    neo_5
        BACKINGUP; UP_TO_DATE=1; ltid=03db4f6382d99698; lag=1e-06

    Here is the same failure on NEO.UnitTest-Master.ZODB3 / MySQL from October.05.

    NEO.UnitTest-Master.ZODB3-kirr / MySQL failed with

    FAIL: testReplicationBlockedByUnfinished1 (neo.tests.threaded.testReplication.ReplicationTests)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/srv/slapgrid/slappart5/srv/testnode/dgb/soft/68fc043aba2ab2e43c30b3d4a422041a/parts/neoppod-repository/neo/tests/threaded/__init__.py", line 1243, in wrapper
        return wrapped(self, cluster, *args, **kw)
      File "/srv/slapgrid/slappart5/srv/testnode/dgb/soft/68fc043aba2ab2e43c30b3d4a422041a/parts/neoppod-repository/neo/tests/threaded/testReplication.py", line 1000, in testReplicationBlockedByUnfinished1
        self.assertPartitionTable(cluster, expected)
      File "/srv/slapgrid/slappart5/srv/testnode/dgb/soft/68fc043aba2ab2e43c30b3d4a422041a/parts/neoppod-repository/neo/tests/threaded/__init__.py", line 1146, in assertPartitionTable
        lambda x: index(x.getUUID()))
      File "/srv/slapgrid/slappart5/srv/testnode/dgb/soft/68fc043aba2ab2e43c30b3d4a422041a/parts/neoppod-repository/neo/tests/__init__.py", line 306, in assertPartitionTable
        '|'.join(pt._formatRows(sorted(pt.count_dict, key=key))))
      File "/srv/slapgrid/slappart5/srv/testnode/dgb/soft/68fc043aba2ab2e43c30b3d4a422041a/parts/neoppod-repository/neo/tests/__init__.py", line 301, in assertEqual
        return super(NeoTestBase, self).assertEqual(first, second, msg=msg)
    failureException: 'UU|UU' != 'UO|UO'

    Here is the same failure on NEO.UnitTest-Master / MySQL from October 13.

    Given that in my run it was only ZODB3 related breakage and other test sutes were all PASSED, and that the failures inside ZODB3 were not new, I decided that my patch does not do harm and should be ok to be merged into master. Isn't it?


    Now @romain is pointing me at https://nexedijs.erp5.net/#/test_result_module/20201014-364B99CB/3 where things break with TypeError: can't set attributes of built-in/extension type 'zodbpickle.binary' on binary._pack = bytes.__str__. This is indeed relevant to zodbpickle upgrade, but if one looks into TestResult that contains this TestResultLine everything is marked as PASSED:

    https://nexedijs.erp5.net/#/test_result_module/20201014-364B99CB

    The same is actually true for my runs, for example as said above NEO.UnitTest-Master-kirr says MySQL=PASSED and SQLite=PASSED in green, but if one looks inside the testlines it shows the TypeError failures:

    https://erp5.nexedi.net/test_result_module/20201015-2AAD0EF4/2
    https://erp5.nexedi.net/test_result_module/20201015-2AAD0EF4/3


    So my question is:

    is it expected not to trust reported "PASSED" status and manually look every time inside of every test run to be sure?

    Personally I believe "PASSED" must be trusted, but this days I won't be surprised by anything...

    For the reference: if PASSED must be trusted, the bug is in runTestSuite.in of NEO software release, and, in my view comes from duplication of many of those runTestSuite.in in between many places without single point where to fix bugs and improve (see d68874fa, !839 (merged)) /cc @jerome

  • Kirill Smelkov @kirr

    mentioned in merge request !839 (merged)

    ·

    mentioned in merge request !839 (merged)

    Toggle commit list
  • is it expected not to trust reported "PASSED" status and manually look every time inside of every test run to be sure?

    There is a bug currently which mark test line without any result as PASSED.

    Quickly looking at the test_result bt5, I guess the issue is in this script, which does not report 0 test count as a failure.

    I applied this patch on Nexedi ERP5 to see if it helps. Please rerun your tests to see if it helps.

  • @romain, thanks, let's see if it helps indeed.

  • @romain, here is how now test result looks for my zodbpickle v↑ patch: https://erp5.nexedi.net/test_result_module/20201016-70D7B565 (result=UNKNOWN). This test result is also displayed in a list of test results with result=FAIL. In other words your change should, hopefully, prevent misinterpretations similar to the above in the future. Thanks.

  • One thing I observed in the past is that when tested software can not be installed at all, the test is also marked as "PASSED". This might be for same reasons.

    @romain romain/erp5@3e513f34 looks a good fix, would you mind adding a quick test in testTaskDistribution and committing the change ?


    maybe test can be something like this:

      def test_???(self):
        test_result_path, _ = self._createTestResult(test_list=['testFoo', ])
        test_result = self.portal.unrestrictedTraverse(test_result_path)
        line_url, _ = self.tool.startUnitTest(test_result_path)
        test_result_line = self.portal.restrictedTraverse(line_url)
        status_dict = {
            'test_count': 0,
            'error_count': 0,
            'failure_count': 0,
        }
        self.tool.stopUnitTest(line_url, status_dict)
        self.tic()
        self.assertEqual(test_result_line.getStringIndex(), 'FAILED')
        self.assertEqual(test_result_line.getSimulationState(), 'stopped')
        self.assertEqual(test_result.getStringIndex(), 'FAIL')
        self.assertEqual(test_result.getSimulationState(), 'stopped')
  • mentioned in commit kirr/neo@d5afef8e

    Toggle commit list
  • mentioned in merge request neoppod!19 (merged)

    Toggle commit list
  • Kirill Smelkov @kirr

    mentioned in merge request !1125 (merged)

    ·

    mentioned in merge request !1125 (merged)

    Toggle commit list
  • mentioned in commit 03112bca

    Toggle commit list
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment