diff --git a/repository/GsApplicationTools-Test.package/GemServerTestServer.class/class/persistentRoot.st b/repository/GsApplicationTools-Test.package/GemServerTestServer.class/class/persistentRoot.st new file mode 100644 index 0000000..2cd0da7 --- /dev/null +++ b/repository/GsApplicationTools-Test.package/GemServerTestServer.class/class/persistentRoot.st @@ -0,0 +1,4 @@ +accessing +persistentRoot + PersistentRoot ifNil: [ PersistentRoot := Dictionary new ]. + ^ PersistentRoot \ No newline at end of file diff --git a/repository/GsApplicationTools-Test.package/GemServerTestServer.class/class/resetPersistentRoot.st b/repository/GsApplicationTools-Test.package/GemServerTestServer.class/class/resetPersistentRoot.st new file mode 100644 index 0000000..5842bfc --- /dev/null +++ b/repository/GsApplicationTools-Test.package/GemServerTestServer.class/class/resetPersistentRoot.st @@ -0,0 +1,3 @@ +accessing +resetPersistentRoot + PersistentRoot := nil \ No newline at end of file diff --git a/repository/GsApplicationTools-Test.package/GemServerTestServer.class/instance/handleAction.st b/repository/GsApplicationTools-Test.package/GemServerTestServer.class/instance/handleAction.st index 6b3975a..f1f37f0 100644 --- a/repository/GsApplicationTools-Test.package/GemServerTestServer.class/instance/handleAction.st +++ b/repository/GsApplicationTools-Test.package/GemServerTestServer.class/instance/handleAction.st @@ -17,5 +17,7 @@ handleAction actionSymbol == #'halt' ifTrue: [ ^ self performHalt ]. actionSymbol == #'serverStarted' - ifTrue: [ ^ self performServerStarted ] ] + ifTrue: [ ^ self performServerStarted ]. + actionSymbol == #'transaction' + ifTrue: [ ^ self performTransaction ] ] ensure: [ actionSymbol := nil ] \ No newline at end of file diff --git a/repository/GsApplicationTools-Test.package/GemServerTestServer.class/instance/performTransaction.st b/repository/GsApplicationTools-Test.package/GemServerTestServer.class/instance/performTransaction.st new file mode 100644 index 0000000..eb75eee --- /dev/null +++ b/repository/GsApplicationTools-Test.package/GemServerTestServer.class/instance/performTransaction.st @@ -0,0 +1,5 @@ +actions +performTransaction + actionResult := messageObject + 1. + self class persistentRoot at: #'performTransaction' put: actionResult. + self logAction: #'performTransaction' \ No newline at end of file diff --git a/repository/GsApplicationTools-Test.package/GemServerTestServer.class/instance/testReentrantTransactionError.st b/repository/GsApplicationTools-Test.package/GemServerTestServer.class/instance/testReentrantTransactionError.st deleted file mode 100644 index c87da6b..0000000 --- a/repository/GsApplicationTools-Test.package/GemServerTestServer.class/instance/testReentrantTransactionError.st +++ /dev/null @@ -1,6 +0,0 @@ -actions -testReentrantTransactionError - self - gemServerTransaction: [ - actionResult := #'RESUMED????'. - self logAction: #'testReentrantTransactionError' ] \ No newline at end of file diff --git a/repository/GsApplicationTools-Test.package/GemServerTestServer.class/methodProperties.json b/repository/GsApplicationTools-Test.package/GemServerTestServer.class/methodProperties.json index 60d3228..2456943 100644 --- a/repository/GsApplicationTools-Test.package/GemServerTestServer.class/methodProperties.json +++ b/repository/GsApplicationTools-Test.package/GemServerTestServer.class/methodProperties.json @@ -1,5 +1,7 @@ { "class" : { + "persistentRoot" : "dkh 01/12/2015 08:25", + "resetPersistentRoot" : "dkh 01/12/2015 08:26", "serverClass" : "dkh 12/21/2014 15:19" }, "instance" : { "actionCount" : "dkh 12/21/2014 15:10", @@ -9,7 +11,7 @@ "basicServerOn:" : "dkh 01/09/2015 15:47", "forceBeginTransaction" : "dkh 12/22/2014 16:41", "forceInternalServerError" : "dkh 12/22/2014 16:41", - "handleAction" : "dkh 01/09/2015 15:53", + "handleAction" : "dkh 01/12/2015 08:31", "handleBeforeUnwind:" : "dkh 12/30/2014 12:21", "initialize" : "dkh 01/02/2015 17:21", "interactiveErrorCommit:" : "dkh 01/09/2015 15:47", @@ -28,7 +30,7 @@ "performNoop" : "dkh 12/22/2014 16:17", "performReentrantTransactionError" : "dkh 01/09/2015 15:55", "performServerStarted" : "dkh 12/22/2014 16:17", + "performTransaction" : "dkh 01/12/2015 08:26", "port" : "dkh 01/06/2015 16:05", "stop" : "dkh 01/02/2015 17:16", - "testReentrantTransactionError" : "dkh 01/09/2015 15:52", "unitTestStartServiceOn:" : "dkh 01/06/2015 15:50" } } diff --git a/repository/GsApplicationTools-Test.package/GemServerTestServer.class/properties.json b/repository/GsApplicationTools-Test.package/GemServerTestServer.class/properties.json index 3577f5e..ff1d605 100644 --- a/repository/GsApplicationTools-Test.package/GemServerTestServer.class/properties.json +++ b/repository/GsApplicationTools-Test.package/GemServerTestServer.class/properties.json @@ -3,7 +3,7 @@ "classinstvars" : [ ], "classvars" : [ - ], + "PersistentRoot" ], "commentStamp" : "", "instvars" : [ "messageCount", diff --git a/repository/GsApplicationTools-Test.package/GemServerTests.class/instance/testReentrantTransactionError.st b/repository/GsApplicationTools-Test.package/GemServerTests.class/instance/testReentrantTransactionError.st index 0e7d46d..c04ddcc 100644 --- a/repository/GsApplicationTools-Test.package/GemServerTests.class/instance/testReentrantTransactionError.st +++ b/repository/GsApplicationTools-Test.package/GemServerTests.class/instance/testReentrantTransactionError.st @@ -15,5 +15,12 @@ testReentrantTransactionError self assert: (gemServer actionException isKindOf: Error). gemServer performMessage: #'add' with: 41. self waitForActionResult: gemServer. + self assert: gemServer actionResult == 42. + gemServer performMessage: #'reentrantTransactionError'. + self waitForActionResult: gemServer. + self assert: gemServer actionResult == self errorLoggedSymbol. + self assert: (gemServer actionException isKindOf: Error). + gemServer performMessage: #'add' with: 41. + self waitForActionResult: gemServer. self assert: gemServer actionResult == 42 ] ensure: [ self stopGems: gemServer ] \ No newline at end of file diff --git a/repository/GsApplicationTools-Test.package/GemServerTests.class/instance/testTransaction.st b/repository/GsApplicationTools-Test.package/GemServerTests.class/instance/testTransaction.st new file mode 100644 index 0000000..0ce30c3 --- /dev/null +++ b/repository/GsApplicationTools-Test.package/GemServerTests.class/instance/testTransaction.st @@ -0,0 +1,20 @@ +tests +testTransaction + | gemServer | + gemServer := self createGemServer. + gemServer class resetPersistentRoot. + System commitTransaction. + gemServer scriptLogEvent: '---->testTransaction' object: gemServer. + [ + self startGems: gemServer. + self waitForActionResult: gemServer. + self assert: gemServer actionResult == #'started'. + gemServer performMessage: #'transaction' with: 41. + self waitForActionResult: gemServer. + self assert: gemServer actionResult == 42. + self assert: (gemServer class persistentRoot at: #'performTransaction') = 42. + gemServer performMessage: #'transaction' with: 45. + self waitForActionResult: gemServer. + self assert: gemServer actionResult == 46. + self assert: (gemServer class persistentRoot at: #'performTransaction') = 46 ] + ensure: [ self stopGems: gemServer ] \ No newline at end of file diff --git a/repository/GsApplicationTools-Test.package/GemServerTests.class/methodProperties.json b/repository/GsApplicationTools-Test.package/GemServerTests.class/methodProperties.json index fbc4dd3..369af2b 100644 --- a/repository/GsApplicationTools-Test.package/GemServerTests.class/methodProperties.json +++ b/repository/GsApplicationTools-Test.package/GemServerTests.class/methodProperties.json @@ -14,6 +14,7 @@ "testForceInternalServerError" : "dkh 01/09/2015 14:04", "testHalt" : "dkh 01/09/2015 14:04", "testPerformMessage" : "dkh 01/09/2015 14:04", - "testReentrantTransactionError" : "dkh 01/09/2015 15:58", + "testReentrantTransactionError" : "dkh 01/09/2015 17:39", "testStartServer" : "dkh 01/09/2015 14:04", + "testTransaction" : "dkh 01/12/2015 08:29", "waitForActionResult:" : "dkh 12/22/2014 12:30" } } diff --git a/repository/GsApplicationTools-Test.package/monticello.meta/version b/repository/GsApplicationTools-Test.package/monticello.meta/version index 61f4f1a..ab2eff9 100644 --- a/repository/GsApplicationTools-Test.package/monticello.meta/version +++ b/repository/GsApplicationTools-Test.package/monticello.meta/version @@ -1 +1 @@ -(name 'GsApplicationTools-Test-dkh.40' message 'Issue #16: isolate source of test errors (use of doTransaction while inTransaction) ... fix it and restore some code erroneously removed and cross fingers' id 'a4ef9321-75f6-4751-bd05-d75d6561ae06' date '01/09/2015' time '17:23:05' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.39' message 'Issue #16: checkpoint GemServerTests>>testReentrantTransactionError plus test cleanup ' id 'dcf59e12-a786-4d6a-8a46-1d26d6702a94' date '01/09/2015' time '16:35:18' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.38' message 'Issue #16: avoid reentering transactionDo: in GemServerInteractiveVMTests>>testError ... special case' id 'a2951444-a52d-407b-b6d3-6939282314f9' date '01/09/2015' time '15:48:52' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.37' message 'Issue #16: setup GemServerRemoteVMTests for static remote server tests (allow for server-side debugging in a tODE client) and fix a basic bug in reentry logic ... still no reentrant tests' id '90c12089-4348-4f7c-96f7-0d7dac03242b' date '01/09/2015' time '14:25:12' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.36' message 'more work on replace use of ports with portOrResourceNameList' id '075c0c92-1b5a-423c-9b3c-76acd5457bee' date '01/06/2015' time '16:18:11' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.35' message 'replace use of ports with portOrResourceNameList, since some gem servers are not port-based ... yet we need a unique id to identify the gem server instances ..' id 'a9fb05a8-f86b-4f88-8834-c1e49cf2ff68' date '01/06/2015' time '15:39:57' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.34' message 'address some test errors' id 'cb7f36cd-1cb5-4ac1-b642-549cb656f156' date '01/06/2015' time '14:10:01' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.33' message 'Make GemServerRegistry a second class object by moving interesting protocol to GemServer' id 'c234943d-547e-4e27-907e-84c8c47f56c9' date '01/06/2015' time '13:45:20' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.32' message 'Issue #10: a bit more streamlining of the gemserver api' id '7fb5e679-456f-4d3b-8104-4c54971d6268' date '01/03/2015' time '20:20:03' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.31' message 'Issue #10: convert startBasicServerOn: to basicServerOn: ... basicServerOn: is now the method that should be subclassed' id '35dbfd93-b887-4d92-b610-071d3f325f96' date '01/02/2015' time '17:54:03' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.30' message 'Issue #10: move basicServerProcess up to GemServer ...' id '2ead4e7f-6196-42f0-9a52-52b70778efb0' date '01/02/2015' time '17:38:02' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.29' message 'Issue #10: address testForceInternalServerError and testForceInternalServerError failures' id 'ebec0e7b-f540-40c5-8ac6-097109deb940' date '12/31/2014' time '13:53:52' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.28' message 'Issue #10: clean up sent but not implemented ... fix GemServerInteractiveVMTests test failures' id '3397c009-e44d-4e72-b55d-5d2de0062365' date '12/31/2014' time '13:02:41' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.27' message 'Issue #10: rename gemServer:* selectors to use beforeUnwind: instead of onError:' id '402c8e0d-6756-460c-a0dc-30c6aa70eec3' date '12/30/2014' time '12:27:10' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.26' message 'Issue #10: implement GemServer>>doBasicTransaction:, GemServer>>doTransaction:, and GemServer>>doTransaction:onConflict: to replace GemServer>>doSimpleTransaction: and GemServer>>doComplexTransaction:onConflict: ... ongoing docs work' id '47acc869-f34a-40f8-bd68-d9453989ad2f' date '12/30/2014' time '07:34:41' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.25' message 'Issue #10: should finally have GemServerInteractiveVMTests>>setUp back in shape...' id '3367f19f-6061-42a8-a9dc-c246011b02b6' date '12/28/2014' time '09:01:03' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.24' message 'Issue #10: pull gemServerExceptionSet iv up to GemServer ... interactive tests needs to be able to customize the exception set used and it stands to reason that developers will as well ...' id '097d8235-4f01-4c74-9c2b-e9c3294337f1' date '12/28/2014' time '08:38:51' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.23' message 'Issue #10: change baseline to require GLASS1...clean up sent but not implemented' id '1d058570-d537-408d-a4ff-1640217c0bef' date '12/26/2014' time '12:05:26' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.22' message 'Issue #10: beef up GemServer>>doComplexTransaction: to include an onCoflictBlock ... GemServer>>doComplexTransaction:onConflict: conflict handling is WHY you use doComplexTransaction:. Allow for exceptionSet customization in gemServer:... gemServerTransaction:... calls and of course add onConflict customization to gemServerTransaction:... calls...GemServerTestServer>>startBasicServerOn: now uses both flavors of gemServer api calls: gemServer:... and gemServerTransaction:...' id '71db5790-d413-46fe-ad95-792ac58b66b8' date '12/23/2014' time '12:32:01' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.21' message 'Issue #10: add GemServer>>gemServer: and GemServer>>gemServer:onError: as non-transactional veriants for handling server errors, breakpoints and halts (should satisfy Issue #12)...refactor GemServer>>gemServerTransaction:onError: to use GemServer>>gemServer:onError: ... add GemServer>>handleGemServerException: to isolate server error and interactiveMoe logic ... GemServer>>serverError:titled:inTransactionDo: allows for performing optional work in the same transaction as the continuation ... if one is already in transaction a commit is expected to come from the caller ... started work on an example server as the GemServerTestServer has been sacrificed to being able to test various error conditions and is no longer a clean example ...' id 'a777493a-51de-40a4-b7d3-5019d2252ddd' date '12/23/2014' time '11:19:30' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.20' message 'Issue #10: add GemServerInteractiveVMTests to test interactiveMode of GemServer, i.e., in interactiveMode exceptions are handled, logged then passed so that developer can bring up a debugger in a development environment ... for those cases when server-side code is being written ...' id '0eb302df-aa08-46ae-9223-72e0fd4702b4' date '12/22/2014' time '17:14:06' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.19' message 'Issue #10: internal server error handling ... expanded local and remote tests for internal server errors ... interactiveMode added so that exceptions are passed so that debugger can be used ' id '1e4bc30f-7578-42de-b931-ec41009543a3' date '12/22/2014' time '14:01:49' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.18' message 'Issue #10: gearing up to work through interactive debugging transaction support' id '9b929f60-3f93-44fd-9236-de1115259c8f' date '12/22/2014' time '11:49:18' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.17' message 'Issue #10: 2.4.x portability ...' id '6932f2db-e550-462a-99f1-8c76da8dab69' date '12/22/2014' time '10:17:32' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.16' message 'Issue #10: implement GemServerTestServer for running GemServerRemoteVMTests tests .... added several more tests and fixed some bugs in GemServer class>>gemServerTransaction:onError: and friends' id '6bae3b41-f9b1-4f6a-8854-a156711ceb74' date '12/21/2014' time '19:15:35' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.15' message 'fix test error' id '0cfee396-6e70-42c4-917b-b4d4aac80330' date '12/13/2014' time '17:38:02' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.14' message 'add statusGems command for GemServer ... returns `ps` for processes associated with the ports' id '5c266914-27f6-4eb4-9a76-cad155e67aa4' date '12/13/2014' time '17:28:11' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.13' message 'More porting to 2.4.x ... add GemServerLauncherTests for simple test coverage, tODE should be used for the actual breakpoint and object log tests ' id 'cdf57f8b-1f65-4b96-a58c-2de0c6f252a9' date '12/09/2014' time '16:48:45' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.12' message 'Issue #2: fix mistake in test' id '3a07e302-7a07-4ece-9768-114ba57f4e40' date '11/29/2014' time '18:22:04' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.11' message 'Issue #2: get the GemServerRemoteVMTests>>testStart test to function ' id '62ad1a30-c7a6-4907-baee-542a534c73a7' date '11/29/2014' time '18:16:14' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.10' message 'Issue #2: add remote vm test' id '73290117-3cfa-4112-b3fb-d81034b00ae6' date '11/29/2014' time '15:07:48' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.9' message 'Issue #2: adjustments for testing' id 'f75b38ed-0717-4895-9995-c83b76e6341f' date '11/29/2014' time '14:48:13' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.8' message 'Issue #2: start/stop/restart appears to be working but I don''t like the level of feedback ... need status command that looks at pid and verifies that pid is there and perhaps some other status information...' id 'b6f523ee-5da7-4b19-8e2e-8ce1198d471a' date '11/29/2014' time '14:24:04' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.7' message 'issue #2: [ci skip] checkpoint .. preparing for first script tests' id '74620772-ec63-42b5-b64c-e677f6122007' date '11/29/2014' time '11:42:20' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.6' message 'Issue #2: get ready to run scripts ... add test' id 'b79e09e2-62a0-4f6b-8a4b-b85fcc9b9e17' date '11/29/2014' time '09:49:22' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.5' message 'Issue #2: continue move towards GemServer centric design ... with GemServer class>>register:for:on: as the center piece' id '2fd99139-bbe8-4039-a3e7-4c60094a002c' date '11/29/2014' time '09:07:50' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.4' message 'Issue #2: get rid of GemServer portInstance variable ... not really necessary' id 'e5a5ac07-e90e-4af7-936b-b2568f6f9082' date '11/26/2014' time '20:12:20' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.3' message 'Issue #2: incorporated the "server boilerplate" Smalltalk code from startSeaside30_Adaptor ... push a bunch of stuff around ...' id 'aed37ec0-331f-45ff-af57-05edc4205308' date '11/26/2014' time '19:29:19' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.2' message 'Issue #2: Taking approach where instead of subclassing GemServerStarter, subclass GemServer ... then we can do direct customization of the various bits and pieces that need customization on run ... and pass any interesting state via the script call ... script location etc. can be specified by the subclass ... Added tests for validating the basic api' id '373d6136-05ff-4c01-a96f-ad233a82912e' date '11/26/2014' time '17:01:21' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.1' message 'Issue #2: add a tests package ... stub of test' id '2760d97c-bfa7-4373-9bb8-60c5da12f177' date '11/26/2014' time '14:28:11' author 'dkh' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file +(name 'GsApplicationTools-Test-dkh.41' message 'Issue #16: add a transactional test case ... ' id 'dab44f5a-f634-4bb0-8d9e-9a14e52c074f' date '01/12/2015' time '08:38:39' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.40' message 'Issue #16: isolate source of test errors (use of doTransaction while inTransaction) ... fix it and restore some code erroneously removed and cross fingers' id 'a4ef9321-75f6-4751-bd05-d75d6561ae06' date '01/09/2015' time '17:23:05' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.39' message 'Issue #16: checkpoint GemServerTests>>testReentrantTransactionError plus test cleanup ' id 'dcf59e12-a786-4d6a-8a46-1d26d6702a94' date '01/09/2015' time '16:35:18' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.38' message 'Issue #16: avoid reentering transactionDo: in GemServerInteractiveVMTests>>testError ... special case' id 'a2951444-a52d-407b-b6d3-6939282314f9' date '01/09/2015' time '15:48:52' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.37' message 'Issue #16: setup GemServerRemoteVMTests for static remote server tests (allow for server-side debugging in a tODE client) and fix a basic bug in reentry logic ... still no reentrant tests' id '90c12089-4348-4f7c-96f7-0d7dac03242b' date '01/09/2015' time '14:25:12' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.36' message 'more work on replace use of ports with portOrResourceNameList' id '075c0c92-1b5a-423c-9b3c-76acd5457bee' date '01/06/2015' time '16:18:11' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.35' message 'replace use of ports with portOrResourceNameList, since some gem servers are not port-based ... yet we need a unique id to identify the gem server instances ..' id 'a9fb05a8-f86b-4f88-8834-c1e49cf2ff68' date '01/06/2015' time '15:39:57' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.34' message 'address some test errors' id 'cb7f36cd-1cb5-4ac1-b642-549cb656f156' date '01/06/2015' time '14:10:01' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.33' message 'Make GemServerRegistry a second class object by moving interesting protocol to GemServer' id 'c234943d-547e-4e27-907e-84c8c47f56c9' date '01/06/2015' time '13:45:20' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.32' message 'Issue #10: a bit more streamlining of the gemserver api' id '7fb5e679-456f-4d3b-8104-4c54971d6268' date '01/03/2015' time '20:20:03' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.31' message 'Issue #10: convert startBasicServerOn: to basicServerOn: ... basicServerOn: is now the method that should be subclassed' id '35dbfd93-b887-4d92-b610-071d3f325f96' date '01/02/2015' time '17:54:03' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.30' message 'Issue #10: move basicServerProcess up to GemServer ...' id '2ead4e7f-6196-42f0-9a52-52b70778efb0' date '01/02/2015' time '17:38:02' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.29' message 'Issue #10: address testForceInternalServerError and testForceInternalServerError failures' id 'ebec0e7b-f540-40c5-8ac6-097109deb940' date '12/31/2014' time '13:53:52' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.28' message 'Issue #10: clean up sent but not implemented ... fix GemServerInteractiveVMTests test failures' id '3397c009-e44d-4e72-b55d-5d2de0062365' date '12/31/2014' time '13:02:41' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.27' message 'Issue #10: rename gemServer:* selectors to use beforeUnwind: instead of onError:' id '402c8e0d-6756-460c-a0dc-30c6aa70eec3' date '12/30/2014' time '12:27:10' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.26' message 'Issue #10: implement GemServer>>doBasicTransaction:, GemServer>>doTransaction:, and GemServer>>doTransaction:onConflict: to replace GemServer>>doSimpleTransaction: and GemServer>>doComplexTransaction:onConflict: ... ongoing docs work' id '47acc869-f34a-40f8-bd68-d9453989ad2f' date '12/30/2014' time '07:34:41' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.25' message 'Issue #10: should finally have GemServerInteractiveVMTests>>setUp back in shape...' id '3367f19f-6061-42a8-a9dc-c246011b02b6' date '12/28/2014' time '09:01:03' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.24' message 'Issue #10: pull gemServerExceptionSet iv up to GemServer ... interactive tests needs to be able to customize the exception set used and it stands to reason that developers will as well ...' id '097d8235-4f01-4c74-9c2b-e9c3294337f1' date '12/28/2014' time '08:38:51' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.23' message 'Issue #10: change baseline to require GLASS1...clean up sent but not implemented' id '1d058570-d537-408d-a4ff-1640217c0bef' date '12/26/2014' time '12:05:26' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.22' message 'Issue #10: beef up GemServer>>doComplexTransaction: to include an onCoflictBlock ... GemServer>>doComplexTransaction:onConflict: conflict handling is WHY you use doComplexTransaction:. Allow for exceptionSet customization in gemServer:... gemServerTransaction:... calls and of course add onConflict customization to gemServerTransaction:... calls...GemServerTestServer>>startBasicServerOn: now uses both flavors of gemServer api calls: gemServer:... and gemServerTransaction:...' id '71db5790-d413-46fe-ad95-792ac58b66b8' date '12/23/2014' time '12:32:01' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.21' message 'Issue #10: add GemServer>>gemServer: and GemServer>>gemServer:onError: as non-transactional veriants for handling server errors, breakpoints and halts (should satisfy Issue #12)...refactor GemServer>>gemServerTransaction:onError: to use GemServer>>gemServer:onError: ... add GemServer>>handleGemServerException: to isolate server error and interactiveMoe logic ... GemServer>>serverError:titled:inTransactionDo: allows for performing optional work in the same transaction as the continuation ... if one is already in transaction a commit is expected to come from the caller ... started work on an example server as the GemServerTestServer has been sacrificed to being able to test various error conditions and is no longer a clean example ...' id 'a777493a-51de-40a4-b7d3-5019d2252ddd' date '12/23/2014' time '11:19:30' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.20' message 'Issue #10: add GemServerInteractiveVMTests to test interactiveMode of GemServer, i.e., in interactiveMode exceptions are handled, logged then passed so that developer can bring up a debugger in a development environment ... for those cases when server-side code is being written ...' id '0eb302df-aa08-46ae-9223-72e0fd4702b4' date '12/22/2014' time '17:14:06' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.19' message 'Issue #10: internal server error handling ... expanded local and remote tests for internal server errors ... interactiveMode added so that exceptions are passed so that debugger can be used ' id '1e4bc30f-7578-42de-b931-ec41009543a3' date '12/22/2014' time '14:01:49' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.18' message 'Issue #10: gearing up to work through interactive debugging transaction support' id '9b929f60-3f93-44fd-9236-de1115259c8f' date '12/22/2014' time '11:49:18' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.17' message 'Issue #10: 2.4.x portability ...' id '6932f2db-e550-462a-99f1-8c76da8dab69' date '12/22/2014' time '10:17:32' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.16' message 'Issue #10: implement GemServerTestServer for running GemServerRemoteVMTests tests .... added several more tests and fixed some bugs in GemServer class>>gemServerTransaction:onError: and friends' id '6bae3b41-f9b1-4f6a-8854-a156711ceb74' date '12/21/2014' time '19:15:35' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.15' message 'fix test error' id '0cfee396-6e70-42c4-917b-b4d4aac80330' date '12/13/2014' time '17:38:02' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.14' message 'add statusGems command for GemServer ... returns `ps` for processes associated with the ports' id '5c266914-27f6-4eb4-9a76-cad155e67aa4' date '12/13/2014' time '17:28:11' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.13' message 'More porting to 2.4.x ... add GemServerLauncherTests for simple test coverage, tODE should be used for the actual breakpoint and object log tests ' id 'cdf57f8b-1f65-4b96-a58c-2de0c6f252a9' date '12/09/2014' time '16:48:45' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.12' message 'Issue #2: fix mistake in test' id '3a07e302-7a07-4ece-9768-114ba57f4e40' date '11/29/2014' time '18:22:04' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.11' message 'Issue #2: get the GemServerRemoteVMTests>>testStart test to function ' id '62ad1a30-c7a6-4907-baee-542a534c73a7' date '11/29/2014' time '18:16:14' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.10' message 'Issue #2: add remote vm test' id '73290117-3cfa-4112-b3fb-d81034b00ae6' date '11/29/2014' time '15:07:48' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.9' message 'Issue #2: adjustments for testing' id 'f75b38ed-0717-4895-9995-c83b76e6341f' date '11/29/2014' time '14:48:13' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.8' message 'Issue #2: start/stop/restart appears to be working but I don''t like the level of feedback ... need status command that looks at pid and verifies that pid is there and perhaps some other status information...' id 'b6f523ee-5da7-4b19-8e2e-8ce1198d471a' date '11/29/2014' time '14:24:04' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.7' message 'issue #2: [ci skip] checkpoint .. preparing for first script tests' id '74620772-ec63-42b5-b64c-e677f6122007' date '11/29/2014' time '11:42:20' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.6' message 'Issue #2: get ready to run scripts ... add test' id 'b79e09e2-62a0-4f6b-8a4b-b85fcc9b9e17' date '11/29/2014' time '09:49:22' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.5' message 'Issue #2: continue move towards GemServer centric design ... with GemServer class>>register:for:on: as the center piece' id '2fd99139-bbe8-4039-a3e7-4c60094a002c' date '11/29/2014' time '09:07:50' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.4' message 'Issue #2: get rid of GemServer portInstance variable ... not really necessary' id 'e5a5ac07-e90e-4af7-936b-b2568f6f9082' date '11/26/2014' time '20:12:20' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.3' message 'Issue #2: incorporated the "server boilerplate" Smalltalk code from startSeaside30_Adaptor ... push a bunch of stuff around ...' id 'aed37ec0-331f-45ff-af57-05edc4205308' date '11/26/2014' time '19:29:19' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.2' message 'Issue #2: Taking approach where instead of subclassing GemServerStarter, subclass GemServer ... then we can do direct customization of the various bits and pieces that need customization on run ... and pass any interesting state via the script call ... script location etc. can be specified by the subclass ... Added tests for validating the basic api' id '373d6136-05ff-4c01-a96f-ad233a82912e' date '11/26/2014' time '17:01:21' author 'dkh' ancestors ((name 'GsApplicationTools-Test-dkh.1' message 'Issue #2: add a tests package ... stub of test' id '2760d97c-bfa7-4373-9bb8-60c5da12f177' date '11/26/2014' time '14:28:11' author 'dkh' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file