VIFIB DESCENTRALIZED CLOUD COMPUTING

SlapOS is a decentralized Cloud Computing technology that can automate the deployment and configuration of applications in a heterogeneous environment.
slapos.libnetworkcache
0.146
29
0
0
4
PASSED
Completed
SLAPOS_TEST_LOG_DIRECTORY=/srv/slapgrid/slappart0/var/log/testnode/bvi-ZpUq5zgsiu SLAPOS_TEST_SHARED_PART_LIST=/srv/slapgrid/slappart0/srv/shared:/srv/slapgrid/slappart0/srv/testnode/bvi/shared /srv/slapgrid/slappart0/srv/testnode/bvi/soft/b46f68b4c79e8fe509633311b0a555b8/bin/python_for_test setup.py test
running test
running egg_info
creating slapos.libnetworkcache.egg-info
writing requirements to slapos.libnetworkcache.egg-info/requires.txt
writing slapos.libnetworkcache.egg-info/PKG-INFO
writing namespace_packages to slapos.libnetworkcache.egg-info/namespace_packages.txt
writing top-level names to slapos.libnetworkcache.egg-info/top_level.txt
writing dependency_links to slapos.libnetworkcache.egg-info/dependency_links.txt
writing entry points to slapos.libnetworkcache.egg-info/entry_points.txt
writing manifest file 'slapos.libnetworkcache.egg-info/SOURCES.txt'
reading manifest file 'slapos.libnetworkcache.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'slapos.libnetworkcache.egg-info/SOURCES.txt'
running build_ext
Generating certificate for '0.590569209067' (key: '/tmp/tmp0.272741465925', certficate: '/tmp/tmp0.682697440958')
WARNING: Testing via this command is deprecated and will be removed in a future version. Users looking for a generic test entry point independent of test runner are encouraged to use tox.
test_generate_cert_exists (slapos.libnetworkcachetests.GenerateSignatureScriptTest) ... ok
test_generate_certificate (slapos.libnetworkcachetests.GenerateSignatureScriptTest) ... Generating a RSA private key
..........................+++++
.........+++++
writing new private key to '/tmp/tmp0.272741465925'
-----
ok
test_generate_key_exists (slapos.libnetworkcachetests.GenerateSignatureScriptTest) ... ok
test_download_offline (slapos.libnetworkcachetests.OfflineTest) ... ok
test_upload_offline (slapos.libnetworkcachetests.OfflineTest) ... ok
test_DirectoryNotFound_non_trustable_entry (slapos.libnetworkcachetests.OnlineTest) ... 127.0.0.1 - - [18/Sep/2020 08:13:59] code 404, message Not Found
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/e0c76e2be6279d8cd4e59149395d83734c537010a99b0464ee1e64bc9c75535003aec9b9e9d73bee85f58196dce5ae99809864d396d1fc89a7fe7329207b4193 HTTP/1.1" 404 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "POST /shacache HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "PUT /shadir/somekey0.324873004683 HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shadir/somekey0.324873004683 HTTP/1.1" 200 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/e0c76e2be6279d8cd4e59149395d83734c537010a99b0464ee1e64bc9c75535003aec9b9e9d73bee85f58196dce5ae99809864d396d1fc89a7fe7329207b4193 HTTP/1.1" 200 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shadir/somekey0.324873004683 HTTP/1.1" 200 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/e0c76e2be6279d8cd4e59149395d83734c537010a99b0464ee1e64bc9c75535003aec9b9e9d73bee85f58196dce5ae99809864d396d1fc89a7fe7329207b4193 HTTP/1.1" 200 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "PUT /shadir/somekey0.324873004683 HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shadir/somekey0.324873004683 HTTP/1.1" 200 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/e0c76e2be6279d8cd4e59149395d83734c537010a99b0464ee1e64bc9c75535003aec9b9e9d73bee85f58196dce5ae99809864d396d1fc89a7fe7329207b4193 HTTP/1.1" 200 -
ok
test_NetworkcacheClient_handle_bad_certificates (slapos.libnetworkcachetests.OnlineTest) ... INFO:networkcache:Ignored wrong certificate, reason:
[('asn1 encoding routines', 'c2i_ibuf', 'illegal zero content'), ('asn1 encoding routines', 'asn1_template_noexp_d2i', 'nested asn1 error'), ('asn1 encoding routines', 'asn1_template_noexp_d2i', 'nested asn1 error'), ('PEM routines', 'PEM_ASN1_read_bio', 'ASN1 lib')], offending certificate:
-----BEGIN CERTIFICATE-----
MIIB4DCCAUkCADANBgkqhkiG9w0BAQsFADA5MQswCQYDVQQGEwJGUjEZMBcGA1UE
CBMQRGVmYXVsdCBQcm92aW5jZTEPMA0GA1UEChMGTmV4ZWRpMB4XDTExMDkxNTA5
MDAwMloXDTEyMDkxNTA5MDAwMlowOTELMAkGA1UEBhMCRlIxGTAXBgNVBAgTEERl
ZmF1bHQgUHJvdmluY2UxDzANBgNVBAoTBk5leGVkaTCBnzANBgkqhkiG9w0BAQEF
AAOBjQAwgYkCgYEApYZv6OstoqNzxG1KI6iE5U4Ts2Xx9lgLeUGAMyfJLyMmRLhw
boKOyJ9Xke4dncoBAyNPokUR6iWOcnPHtMvNOsBFZ2f7VA28em3+E1JRYdeNUEtX
Z0s3HjcouaNAnPfjFTXHYj4um1wOw2cURSPuU5dpzKBbV+/QCb5DLheynisCAwEA
ATANBgkqhkiG9w0BAQsFAAOBgQBCZLbTVdrw3RZlVVMFezSHrhBYKAukTwZrNmJX
mHqi2tN8tNo6FX+wmxUUAf3e8R2Ymbdbn2bfbPpcKQ2fG7PuKGvhwMG3BlF9paEC
q7jdfWO18Zp/BG7tagz0jmmC4y/8akzHsVlruo2+2du2freE8dK746uoMlXlP93g
QUUGLQ==
-----END CERTIFICATE-----

ok
test_download (slapos.libnetworkcachetests.OnlineTest) ... 127.0.0.1 - - [18/Sep/2020 08:13:59] code 404, message Not Found
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/70b89549774911ef5e0360d304f16ed971581a444bd4f52e65bea33d3e63d8bed76fef9ab7cae1a77d1762b4401b1ccdbb5b035daa85d7a1ad3cfb7032771740 HTTP/1.1" 404 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "POST /shacache HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/70b89549774911ef5e0360d304f16ed971581a444bd4f52e65bea33d3e63d8bed76fef9ab7cae1a77d1762b4401b1ccdbb5b035daa85d7a1ad3cfb7032771740 HTTP/1.1" 200 -
ok
test_download_not_exists (slapos.libnetworkcachetests.OnlineTest) ... 127.0.0.1 - - [18/Sep/2020 08:13:59] code 404, message Not Found
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/6af44f78d3dec7fed7edd000c2a1e8981c7be6b3805e2ca1200883e89b6508cb8db9c102a58f35d3f165fcd7ba8e44c2cd0ec3e3d5bad8a24cc5f84c27303f34 HTTP/1.1" 404 -
ok
test_select_json_in_json_no_dict (slapos.libnetworkcachetests.OnlineTest) ... 127.0.0.1 - - [18/Sep/2020 08:13:59] code 404, message Not Found
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/c25a2816158e788d451aae54f0f53f93277985efa75af08c7d2b814e2438b4ddbfc4bb43743b0f228593ae7e9f270280348e91da363a0bd5fc232e2d3f915c2a HTTP/1.1" 404 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "POST /shacache HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "PUT /shadir/somekey0.168305380747 HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shadir/somekey0.168305380747 HTTP/1.1" 200 -
INFO:networkcache:Bad or missing sha512 in directory response ('This is a string')
ok
test_select_json_no_in_json_response (slapos.libnetworkcachetests.OnlineTest) ... 127.0.0.1 - - [18/Sep/2020 08:13:59] code 404, message Not Found
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/0cf1a9cc8025e3e8ac6e0619da6c8ab2f57a19d22262c75782f5a467a267b563261728e806565ff9f7c8d71c5f60d18227715898071fe36810c3d6aa6fcf1eb3 HTTP/1.1" 404 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "POST /shacache HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "PUT /shadir/somekey0.362815851466 HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shadir/somekey0.362815851466 HTTP/1.1" 200 -
INFO:networkcache:Failed to parse json-in-json response (u'This is not a json.')
ok
test_select_no_entries (slapos.libnetworkcachetests.OnlineTest) ... 127.0.0.1 - - [18/Sep/2020 08:13:59] code 404, message Not Found
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/19a52012e12a2ae3c995d4611edc28d2e65c3fd12839ec14c80944cbbb931045bf968774bfc3eaeafb887c30a3321a1ada7e790e472fc21f569232e64c3fca72 HTTP/1.1" 404 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "POST /shacache HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "PUT /shadir/somekey0.658484875585 HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shadir/somekey0.658484875585 HTTP/1.1" 200 -
ok
test_select_no_json_response (slapos.libnetworkcachetests.OnlineTest) ... 127.0.0.1 - - [18/Sep/2020 08:13:59] code 404, message Not Found
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/0e444eddd4c77149eb3ca96e8d830123b694deece4d27ee0b97148be17919382d28b55e004ceefa6911091805a3e69eecf3fc488ccfbe6b10b1d6f04af3f7ff6 HTTP/1.1" 404 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "POST /shacache HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "PUT /shadir/somekey0.214891094242 HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shadir/somekey0.214891094242 HTTP/1.1" 200 -
INFO:networkcache:Failed to parse json response ('This is not a json.')
ok
test_select_signed_content (slapos.libnetworkcachetests.OnlineTest) ... 127.0.0.1 - - [18/Sep/2020 08:13:59] code 404, message Not Found
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/a1e54916b62870682aee67eb24d33e0390b916d2b17b1927d3e39c5cd979942c82bed5d47852cd1cba7a01b779955ef5398418b025fe56e35f4c3980c6a5c540 HTTP/1.1" 404 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "POST /shacache HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "PUT /shadir/somekey0.266914670951 HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shadir/somekey0.266914670951 HTTP/1.1" 200 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/a1e54916b62870682aee67eb24d33e0390b916d2b17b1927d3e39c5cd979942c82bed5d47852cd1cba7a01b779955ef5398418b025fe56e35f4c3980c6a5c540 HTTP/1.1" 200 -
ok
test_select_signed_content_multiple (slapos.libnetworkcachetests.OnlineTest) ... 127.0.0.1 - - [18/Sep/2020 08:13:59] code 404, message Not Found
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/83b1ad29ceb234a14134a807c98119a7df906092b424f009713e48c6ec71bc356973b925805aeac1d095d16f542f8324a2c780822f5e1cb4ccdd9e8361b94097 HTTP/1.1" 404 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "POST /shacache HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "PUT /shadir/somekey0.0155476343617 HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/83b1ad29ceb234a14134a807c98119a7df906092b424f009713e48c6ec71bc356973b925805aeac1d095d16f542f8324a2c780822f5e1cb4ccdd9e8361b94097 HTTP/1.1" 200 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "PUT /shadir/somekey0.0155476343617 HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shadir/somekey0.0155476343617 HTTP/1.1" 200 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/83b1ad29ceb234a14134a807c98119a7df906092b424f009713e48c6ec71bc356973b925805aeac1d095d16f542f8324a2c780822f5e1cb4ccdd9e8361b94097 HTTP/1.1" 200 -
ok
test_select_signed_content_server_hacked (slapos.libnetworkcachetests.OnlineTest) ... 127.0.0.1 - - [18/Sep/2020 08:13:59] code 404, message Not Found
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/ea2a448db9a1db0e27ee59bb4acea0e4e3bbd626fdde97d33227b40eb58f7a9fd3a4be25e0b20a763cd15d2792e838b9633f4e89a64d92fe3b0c6872a04be30f HTTP/1.1" 404 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "POST /shacache HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "PUT /shadir/somekey0.366437764268 HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shadir/somekey0.366437764268 HTTP/1.1" 200 -
ok
test_select_signed_content_several_certificates (slapos.libnetworkcachetests.OnlineTest) ... 127.0.0.1 - - [18/Sep/2020 08:13:59] code 404, message Not Found
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/17af9a7582f3e108f81120ddbb3d8435729a367b2d7861a9171fe9977c1a7a04cd79cf6bd6ad683f981250465c34edcafb18717e4c4f171ee5dca80a5d775dd1 HTTP/1.1" 404 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "POST /shacache HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "PUT /shadir/somekey0.541825739774 HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shadir/somekey0.541825739774 HTTP/1.1" 200 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/17af9a7582f3e108f81120ddbb3d8435729a367b2d7861a9171fe9977c1a7a04cd79cf6bd6ad683f981250465c34edcafb18717e4c4f171ee5dca80a5d775dd1 HTTP/1.1" 200 -
ok
test_upload (slapos.libnetworkcachetests.OnlineTest) ... 127.0.0.1 - - [18/Sep/2020 08:13:59] code 404, message Not Found
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/69f2405094b0d1f1dfdb94f1402fb8608521f5eec353124d0f9e89c19310aaf710f84dd9e6da51624802bcbd9d8cd2985a8e90b1d4c6a44c4cfb8b8f30e6d379 HTTP/1.1" 404 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "POST /shacache HTTP/1.1" 201 -
ok
test_upload_shadir (slapos.libnetworkcachetests.OnlineTest)
Check scenario with shadir used ... 127.0.0.1 - - [18/Sep/2020 08:13:59] code 404, message Not Found
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/68be154d05c80b297b97c72952fa898d4042fb77db4634b7307bfba81c5fac9ef55211425f49df0966f677312ff8fc52f4be0fff4da6c8b2332e813b7159edf5 HTTP/1.1" 404 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "POST /shacache HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "PUT /shadir/mykey HTTP/1.1" 201 -
ok
test_upload_shadir_no_filename (slapos.libnetworkcachetests.OnlineTest)
Check scenario with shadir used, but not filename passed ... 127.0.0.1 - - [18/Sep/2020 08:13:59] code 404, message Not Found
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/d4e2f62a6dca1da2ba5823ad73cfe6ff227c15c48e814aafa595f8c0d7cff97d197c8c1816dbefa955a6c1c7f49c9254040429034353cfae580a5f986ee65ae5 HTTP/1.1" 404 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "POST /shacache HTTP/1.1" 201 -
INFO:networkcache:file_name and urlmd5 are required for non-generic upload
ok
test_upload_shadir_select (slapos.libnetworkcachetests.OnlineTest)
Check scenario with shadir used ... 127.0.0.1 - - [18/Sep/2020 08:13:59] code 404, message Not Found
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/cc63515e36ab4930f5f6427b056f8bdc1a73f3f39f74930211c11aa2dfd9d5d27f727d2ccd59dc4e5c1e3a6d97f7876268e1f3c1ca02822196f87d0e9d1efc3a HTTP/1.1" 404 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "POST /shacache HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "PUT /shadir/somekey0.939084791305 HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shadir/somekey0.939084791305 HTTP/1.1" 200 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/cc63515e36ab4930f5f6427b056f8bdc1a73f3f39f74930211c11aa2dfd9d5d27f727d2ccd59dc4e5c1e3a6d97f7876268e1f3c1ca02822196f87d0e9d1efc3a HTTP/1.1" 200 -
ok
test_upload_shadir_select_not_exists (slapos.libnetworkcachetests.OnlineTest)
Check scenario with shadir used ... 127.0.0.1 - - [18/Sep/2020 08:13:59] code 404, message Not Found
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/fbd3dc36f1a0fd2b28bfadcadc5e54a6517a3fa4fbe044f7d5d48b7a9bfd4b2988be58e1c866a1bbf35950f77120cb1f5a0709672cbc9d1b22f22528c77dcdb7 HTTP/1.1" 404 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "POST /shacache HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "PUT /shadir/somekey0.380115593178 HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] code 404, message Not Found
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shadir/key_another_key0.0545389098009 HTTP/1.1" 404 -
INFO:networkcache:ignored unhandled exception at /srv/slapgrid/slappart0/srv/testnode/bvi/inst/test0-0/parts/slapos.libnetworkcache/slapos/libnetworkcachetests.py:403
HTTPError: HTTP Error 404: Not Found
ok
test_upload_twice_same (slapos.libnetworkcachetests.OnlineTest) ... 127.0.0.1 - - [18/Sep/2020 08:13:59] code 404, message Not Found
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/1c91d59fdaca361b106ed5b54bf9dd71974f6e0bcdcca580766d5140edb5ba44240d57639bce7116eef705132eb917659219d3d59bd455d9fcc2067fd8e66593 HTTP/1.1" 404 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "POST /shacache HTTP/1.1" 201 -
127.0.0.1 - - [18/Sep/2020 08:13:59] "GET /shacache/1c91d59fdaca361b106ed5b54bf9dd71974f6e0bcdcca580766d5140edb5ba44240d57639bce7116eef705132eb917659219d3d59bd455d9fcc2067fd8e66593 HTTP/1.1" 200 -
ok
test_upload_wrong_return_code (slapos.libnetworkcachetests.OnlineTestPOST200)
Check reaction on HTTP return code different then 201 ... 127.0.0.1 - - [18/Sep/2020 08:14:00] code 404, message Not Found
127.0.0.1 - - [18/Sep/2020 08:14:00] "GET /shacache/d927d343797534372a1643c3f5b3197849542a67244605f38196803b9821c8a462ad4ba2cb21775267355b282f0c208f95aa444b8ebb6bfcd44f19db05c05520 HTTP/1.1" 404 -
127.0.0.1 - - [18/Sep/2020 08:14:00] "POST /shacache HTTP/1.1" 200 -
ok
test_upload_to_ssl_auth (slapos.libnetworkcachetests.OnlineTestSSLServer) ... skipped 'Requires standalone test server'
test_upload_to_ssl_auth_no_auth (slapos.libnetworkcachetests.OnlineTestSSLServer) ... skipped 'Requires standalone test server'
test_upload_with_key_with_ssl_auth (slapos.libnetworkcachetests.OnlineTestSSLServer) ... skipped 'Requires standalone test server'
test_upload_with_key_with_ssl_auth_no_dir_auth (slapos.libnetworkcachetests.OnlineTestSSLServer) ... skipped 'Requires standalone test server'
test_upload_wrong_return_sha (slapos.libnetworkcachetests.OnlineTestWrongChecksum)
Check reaction in case of wrong sha returned ... 127.0.0.1 - - [18/Sep/2020 08:14:00] code 404, message Not Found
127.0.0.1 - - [18/Sep/2020 08:14:00] "GET /shacache/73b6f2173bb5ac3ba55b3c2b1f18ab92f5014447f55dc927ab4b53c9622324f3d5fa637e84bbe582e7839e878a24740fdb744f15cb57b0b3cac95e80467d74a0 HTTP/1.1" 404 -
127.0.0.1 - - [18/Sep/2020 08:14:00] "POST /shacache HTTP/1.1" 201 -
ok

----------------------------------------------------------------------
Ran 29 tests in 0.146s

OK (skipped=4)