servalproject / serval-dna

The Serval Project's core daemon that implements Distributed Numbering Architecture (DNA), MDP, VoMP, Rhizome, MeshMS, etc.
http://servalproject.org
Other
170 stars 80 forks source link

Porting to Solaris #16

Open DanielO opened 11 years ago

DanielO commented 11 years ago

The 'solaris' branch has changes to port Serval to Solaris.

After some changes (and one outright bug fix 2ccbc54dc1435b3c7c5e5936e8efe1b0ff2d4ee0 basic things work.

Note that the version of Bash installed on serval1 is very old so I am using a hand built bash 4.2.

However many tests fail, eg

==== tests/config
1. Get creates instance directory... PASS
2. Set creates instance directory... PASS
3. Get an unset config item... PASS
4. Set and get a single config item... PASS
5. Get all config items... PASS
6. Set a single config item twice... PASS
7. Delete an unset config item... PASS
8. Delete single config item... PASS
9. Config item names are case insensitive... PASS
10. Config item names can have internal dots... PASS
11. Debug config options affect verbosity... PASS
12. Debug config options override debug.all... PASS
12 tests, 12 pass, 0 fail, 0 error
==== tests/dnahelper
1. Non-existent DNA helper executable... PASS
2. DNA helper configured argument... FAIL
3. DNA helper returns one valid reply... FAIL
4. DNA helper returns two valid replies... FAIL
5. DNA helper returns three valid replies... FAIL
6. DNA helper returns empty URI... FAIL
7. DNA helper returns invalid URI, missing scheme... FAIL
8. DNA helper returns invalid URI, invalid char... FAIL
9. DNA helper returns invalid URI, empty hierarchical part... FAIL
10. DNA helper returns mismatched token... FAIL
11. DNA helper returns empty token... FAIL
12. DNA helper returns invalid token... FAIL
13. DNA helper returns invalid token, too long... FAIL
14. DNA helper returns invalid token, too short... FAIL
15. DNA helper returns mismatched DID... FAIL
16. DNA helper returns empty DID... FAIL
17. DNA helper returns invalid DID... FAIL
18. DNA helper returns invalid DID, too long... FAIL
19. DNA helper returns invalid DID, too short... FAIL
20. DNA helper returns invalid reply, missing delimiter... FAIL
21. DNA helper returns invalid reply, name too long... FAIL
22. DNA helper returns invalid reply, empty line... FAIL
23. DNA helper returns invalid reply, missing newline... FAIL
24. DNA helper process takes too long to reply and is restarted... FAIL
25. DNA helper spurious output after DONE is ignored... FAIL
26. DNA helper process dies unexpectedly and is restarted... FAIL
26 tests, 1 pass, 25 fail, 0 error
==== tests/dnaprotocol
1. Start three servald servers with dummy interfaces... PASS
2. Lookup by wildcard... PASS
3. Lookup by empty string... PASS
4. Lookup non-existent phone number... PASS
5. Lookup local phone number... PASS
6. Lookup remote phone number... PASS
7. Node info auto-resolves for local identities... PASS
8. Node info resolves remote identities... PASS
9. Lookup phone number three nodes reply... FAIL
10. Lookup phone number two nodes reply... FAIL
11. Lookup phone number one node replies... FAIL
11 tests, 8 pass, 3 fail, 0 error
==== tests/jni
1. Serval JNI echo Hello world... ERROR
2. Serval non-JNI output delimiter environment variable... PASS
3. Serval JNI repeated calls in same process... ERROR
3 tests, 1 pass, 0 fail, 2 error
==== tests/rhizomeops
1. Initial list is empty...
2. Add with no author and no manifest file...
3. Add with no manifest file... FAIL
4. Add with no author makes manifest without BK... FAIL
5. Add with non-existent manifest file... FAIL
6. Add with minimal manifest file... FAIL
7. Add with empty payload... FAIL
8. List contains one file after one add... FAIL
9. Extract manifest after one add... ERROR
10. Extract non-existent manifest... PASS
11. Extract manifest using invalid ID... PASS
12. Extract file after one add... ERROR
13. Extract non-existent file... PASS
14. Extract file using invalid ID... PASS
15. Add same manifest detects duplicate... ERROR
16. Add mismatched manifest/payload fails... ERROR
17. Add new payload to existing manifest with same version fails... ERROR
18. Add new payload to existing manifest with new version... ERROR
19. Cannot add new payload to authorless manifest... ERROR
20. Add new payload to authorless manifest with bundle secret... ERROR
21. Add new payload to existing manifest with automatic version... ERROR
22. Add with unsupported service fails... PASS
23. First add MeshMS creates manifest... PASS
24. Subsequent add MeshMS updates manifest and removes old payload... PASS
25. Add MeshMS without sender fails... PASS
26. Add MeshMS without recipient fails... PASS
27. Add MeshMS without author uses sender... PASS
28. List MeshMS manifests by filter... PASS
29. Can import a bundle created by another instance... ERROR
29 tests, 12 pass, 7 fail, 10 error
==== tests/rhizomeprotocol
1. New bundle and update transfer to one node... ERROR
2. Big new bundle transfers to one node... ERROR
3. New bundle transfers to four nodes... ERROR
4. Payload deletion transfers to one node... ERROR
5. One way push bundle to unconnected node... ERROR
6. One way pull bundle from unconnected node... ERROR
7. Two-way sync bundles between unconnected nodes... ERROR
8. Add file locally using HTTP, returns manifest... ERROR
8 tests, 0 pass, 0 fail, 8 error
==== tests/server
1. Starting server creates instance directory... PASS
2. Starting server gives no errors... PASS
3. Starting server with no configured interfaces gives error... PASS
4. Starting server on dummy interface gives no errors... PASS
5. Start server while already running... PASS
6. Stop server before it finishes starting... PASS
6 tests, 6 pass, 0 fail, 0 error

Mantis severity: minor Mantis priority: normal Mantis project: Porting Can reproduce: N/A

DanielO commented 11 years ago

Originally reported as mantis:0000229 at Fri Sep 7 12:27:52 2012.

DanielO commented 11 years ago

At Fri Sep 7 15:19:05 2012:

Note that all or most of the failures are not related to Solaris per se as the same code fails on Linux.

DanielO commented 11 years ago

At Fri Sep 7 16:38:21 2012:

Current failing tests as of f8d5b066c0a88ebc28266e043ce24e0ff019d46a are

dnahelper/2.ExecArg1.FAIL
dnahelper/5.ReplyOk3.FAIL
dnahelper/24.HelperTimeout.FAIL

dnaprotocol/9.MultiLookupHelperThree.FAIL
dnaprotocol/10.MultiLookupHelperTwo.FAIL
dnaprotocol/11.MultiLookupHelperOne.FAIL

jni/1.Echo.ERROR
jni/3.Repeat.ERROR

rhizomeops/2.AddNoAuthorNoManifest.FAIL
rhizomeops/20.AddUpdateNoAuthorWithSecret.ERROR
rhizomeops/21.AddUpdateAutoVersion.ERROR
rhizomeops/29.ImportForeignBundle.ERROR
rhizomeops/3.AddNoManifest.FAIL
rhizomeops/4.AddNoAuthor.FAIL
rhizomeops/5.AddNonExistManifest.FAIL
rhizomeops/6.AddManifest.FAIL
rhizomeops/7.AddEmpty.FAIL
rhizomeops/8.AddThenList.FAIL
rhizomeops/9.AddThenExtractManifest.ERROR
rhizomeops/12.AddThenExtractFile.ERROR
rhizomeops/15.AddDuplicate.ERROR
rhizomeops/16.AddMismatched.ERROR
rhizomeops/17.AddUpdateSameVersion.ERROR
rhizomeops/18.AddUpdateNewVersion.ERROR
rhizomeops/19.AddUpdateNoAuthor.ERROR

rhizomeprotocol/1.FileTransfer.ERROR
rhizomeprotocol/2.FileTransferBig.ERROR
rhizomeprotocol/3.FileTransferMulti.ERROR
rhizomeprotocol/4.FileTransferDelete.ERROR

The JNI tests are failing as there is no JDK available

DanielO commented 11 years ago

At Fri Sep 7 17:09:33 2012 attached testlogs.tgz, 1514215 bytes, application/octet-stream.

quixotique commented 11 years ago

Issue migrated from Mantis to GitHub with Mantis status new and resolution open at Wed Sep 12 12:59:42 2012 using sp-mantis2github version 0.91

quixotique commented 11 years ago

The jni tests 1 and 3 fail on Solaris because libservald.so is not being built on Solaris, presumably because of the 64-bit limitation (the NaCl libraries are not built with -fPIC).

quixotique commented 11 years ago

The dnahelper tests all PASS on Solaris, if run serially not concurrently. The failures documented in the attachment were all caused by long delays in the servald process when sending a request to the dnahelper child process.

quixotique commented 11 years ago

ca6d8f487d5decce9477de99f5c12e03cacb70dc fixes the broken rhizomeprotocol tests.

quixotique commented 11 years ago

All tests except the jni suite now pass on Solaris. You may have to run them serially not concurrently.

gardners commented 11 years ago

servald monitor on a solaris node fails, and the server reports:

ERROR: monitor.c:326:monitor_new_client() getpeerucred(): Bad address [errno=14]

quixotique commented 11 years ago

Probably the monitor CLI client has never worked on Solaris, considering that it is not covered by any tests...