appswarm 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.autotest +124 -0
- data/History.txt +7 -0
- data/Manifest.txt +304 -0
- data/README.txt +373 -0
- data/Rakefile +153 -0
- data/TODO +7 -0
- data/apps/README.txt +17 -0
- data/apps/admin/admin.rb +79 -0
- data/apps/admin/controllers/admin.rb +81 -0
- data/apps/admin/controllers/settings.rb +63 -0
- data/apps/admin/controllers/users.rb +3 -0
- data/apps/admin/features/access.feature +21 -0
- data/apps/admin/features/mountLocal.feature +12 -0
- data/apps/admin/features/settings.feature +68 -0
- data/apps/admin/features/startApps.feature +27 -0
- data/apps/admin/layouts/main.rhtml +10 -0
- data/apps/admin/lib/settings.rb +52 -0
- data/apps/admin/static/admin.css +23 -0
- data/apps/admin/views/_log.rhtml +21 -0
- data/apps/admin/views/index.rhtml +43 -0
- data/apps/admin/views/info.rhtml +7 -0
- data/apps/admin/views/settings.rhtml +9 -0
- data/apps/admin/views/settings/_http_app.rhtml +15 -0
- data/apps/admin/views/settings/_web_server.rhtml +32 -0
- data/apps/admin/views/settings/index.rhtml +3 -0
- data/apps/admin/views/users/index.rhtml +6 -0
- data/apps/application_provider/application_provider.rb +11 -0
- data/apps/blog/blog.rb +27 -0
- data/apps/blog/controllers/blog.rb +29 -0
- data/apps/blog/views/index.rhtml +27 -0
- data/apps/browser_starter/browser_starter.rb +32 -0
- data/apps/crypto/crypto.rb +47 -0
- data/apps/crypto/crypto_rsa.rb +102 -0
- data/apps/crypto/spec/crypto_spec.rb +10 -0
- data/apps/directory_service/directory_service.rb +107 -0
- data/apps/directory_service/net_application.rb +92 -0
- data/apps/directory_service/spec/directory_service_spec.rb +36 -0
- data/apps/directory_service/spec/net_application_spec.rb +3 -0
- data/apps/global_application_interface/global_application.rb +52 -0
- data/apps/global_application_interface/global_application_interface.rb +84 -0
- data/apps/global_application_interface/spec/app_api_spec.rb +5 -0
- data/apps/global_tuple_space/global_tuple_space.rb +27 -0
- data/apps/global_web_proxy/features/session_handling.feature +7 -0
- data/apps/global_web_proxy/global_web_proxy.rb +221 -0
- data/apps/global_web_proxy/proxy/HTTPProxyServer-Dateien/rdoc-style.css +208 -0
- data/apps/global_web_proxy/proxy/HTTPProxyServer.html +566 -0
- data/apps/global_web_proxy/proxy/dnstest.rb +30 -0
- data/apps/global_web_proxy/proxy/proxy.rb +86 -0
- data/apps/global_web_proxy/proxy/wiki.html +267 -0
- data/apps/global_web_proxy/proxy/wiki.rb +115 -0
- data/apps/global_web_proxy/spec/res1 +112 -0
- data/apps/global_web_proxy/spec/res2 +125 -0
- data/apps/global_web_proxy/spec/web_proxy_spec.rb +88 -0
- data/apps/global_web_server/global_web_server.rb +120 -0
- data/apps/global_web_server/global_web_servlet.rb +6 -0
- data/apps/hello_world/controllers/hello_world.rb +11 -0
- data/apps/hello_world/features/show_on_local_web_server.feature +44 -0
- data/apps/hello_world/features/starting_apps.feature +6 -0
- data/apps/hello_world/features/through_global.feature +12 -0
- data/apps/hello_world/hello_world.rb +3 -0
- data/apps/hello_world/views/get.rhtml +10 -0
- data/apps/hello_world/views/index.rhtml +9 -0
- data/apps/hello_world/views/post.rhtml +10 -0
- data/apps/home/controllers/home.rb +11 -0
- data/apps/home/home.rb +12 -0
- data/apps/home/layouts/main.rhtml +16 -0
- data/apps/home/static/Zeichnung.svg +240 -0
- data/apps/home/static/home.css +134 -0
- data/apps/home/static/menu.css +99 -0
- data/apps/home/views/_appInfo.rhtml +22 -0
- data/apps/home/views/_dummy_fill.rhtml +3 -0
- data/apps/home/views/_info.rhtml +6 -0
- data/apps/home/views/_menu.rhtml +17 -0
- data/apps/home/views/index.rhtml +4 -0
- data/apps/home/views/overview.rhtml +2 -0
- data/apps/local_chunk_store/chunk_store.rb +15 -0
- data/apps/local_chunk_store/local_chunk_store.rb +123 -0
- data/apps/local_chunk_store/spec/local_chunk_store_spec.rb +30 -0
- data/apps/local_file_store/app_configuration.rb +78 -0
- data/apps/local_file_store/app_file_store.rb +32 -0
- data/apps/local_file_store/cached_file_store.rb +94 -0
- data/apps/local_file_store/features/testbed_handling_of_directories.feature +20 -0
- data/apps/local_file_store/local_file_store.rb +47 -0
- data/apps/local_file_store/spec/app_configuration_spec.rb +30 -0
- data/apps/local_file_store/spec/local_file_store_spec.rb +54 -0
- data/apps/local_object_storage/lib/cell.rb +29 -0
- data/apps/local_object_storage/lib/cellmgr.rb +57 -0
- data/apps/local_object_storage/lib/index.rb +43 -0
- data/apps/local_object_storage/lib/marshal.rb +96 -0
- data/apps/local_object_storage/lib/pagefile.rb +6 -0
- data/apps/local_object_storage/lib/persistent_object.rb +126 -0
- data/apps/local_object_storage/local_object_storage.rb +148 -0
- data/apps/local_object_storage/spec/local_object_storage_spec.rb +123 -0
- data/apps/local_secure_file_store/local_secure_file_store.rb +64 -0
- data/apps/local_secure_file_store/spec/local_secure_file_store_spec.rb +23 -0
- data/apps/local_tuple_space/local_tuple_space.rb +92 -0
- data/apps/local_tuple_space/spec/tuple_space_spec.rb +25 -0
- data/apps/local_web_server/features/parsing_args.feature +18 -0
- data/apps/local_web_server/local_web_server.rb +166 -0
- data/apps/logger/logger.rb +27 -0
- data/apps/master/master.rb +46 -0
- data/apps/master/spec/master_spec.rb +31 -0
- data/apps/my_spec_spec.rb +15 -0
- data/apps/name_service/name_service.rb +75 -0
- data/apps/name_service/spec/name_service_spec.rb +51 -0
- data/apps/network_discovery/network_discovery.rb +45 -0
- data/apps/network_discovery_localstore/network_discovery_localstore.rb +20 -0
- data/apps/network_discovery_udp/network_discovery_udp.rb +51 -0
- data/apps/network_lookup/network_lookup.rb +61 -0
- data/apps/network_node/abstract_node.rb +104 -0
- data/apps/network_node/drb_node.rb +90 -0
- data/apps/network_node/network_app.rb +9 -0
- data/apps/network_node/network_node.rb +471 -0
- data/apps/network_node/remote_service.rb +45 -0
- data/apps/network_node/secure_node.rb +125 -0
- data/apps/network_node/spec/drb_spec.rb +41 -0
- data/apps/network_node/spec/network_node_spec_not.rb +264 -0
- data/apps/new_network_node/new_network_node.rb +427 -0
- data/apps/new_network_node/spec/new_network_node_spec.rb +186 -0
- data/apps/node_broadcast/node_broadcast.rb +167 -0
- data/apps/node_broadcast/spec/node_broadcast_spec.rb +59 -0
- data/apps/permaspace/permaspace.rb +47 -0
- data/apps/plaindb/lib/btree.rb +38 -0
- data/apps/plaindb/plaindb.rb +199 -0
- data/apps/plaindb/spec/table_write_spec.rb +36 -0
- data/apps/routed_network/routed_network.rb +23 -0
- data/apps/routed_network/spec/routed_network_spec.rb +17 -0
- data/apps/session_manager/session_manager.rb +18 -0
- data/apps/spec_output.html +222 -0
- data/apps/todo/controllers/todo.rb +87 -0
- data/apps/todo/model/comment.rb +10 -0
- data/apps/todo/model/project.rb +20 -0
- data/apps/todo/model/todo.rb +16 -0
- data/apps/todo/model/user.rb +5 -0
- data/apps/todo/todo.rb +21 -0
- data/apps/todo/views/_commentList.rhtml +7 -0
- data/apps/todo/views/_createProject.rhtml +5 -0
- data/apps/todo/views/_partList.rhtml +12 -0
- data/apps/todo/views/_projectList.rhtml +16 -0
- data/apps/todo/views/edit.rhtml +11 -0
- data/apps/todo/views/editPart.rhtml +10 -0
- data/apps/todo/views/index.rhtml +2 -0
- data/apps/todo/views/question.rhtml +4 -0
- data/apps/transparent_network/transparent_network.rb +7 -0
- data/apps/udp_network/big_transfer.rb +97 -0
- data/apps/udp_network/features/information.feature +7 -0
- data/apps/udp_network/message_queue.rb +84 -0
- data/apps/udp_network/network_interface_api.rb +39 -0
- data/apps/udp_network/qos_queue.rb +186 -0
- data/apps/udp_network/simple_api.rb +180 -0
- data/apps/udp_network/spec/big_transfer_spec.rb +0 -0
- data/apps/udp_network/spec/qos_queue_spec.rb +99 -0
- data/apps/udp_network/spec/simple_api_spec.rb +35 -0
- data/apps/udp_network/spec/udp_network_spec.rb +115 -0
- data/apps/udp_network/spec/udp_transceiver_spec.rb +90 -0
- data/apps/udp_network/udp_network.rb +196 -0
- data/apps/udp_network/udp_transceiver.rb +329 -0
- data/apps/wiki/controllers/wiki.rb +56 -0
- data/apps/wiki/features/editing.feature +21 -0
- data/apps/wiki/layouts/main.rhtml +18 -0
- data/apps/wiki/lib/media_wiki_html.rb +35 -0
- data/apps/wiki/lib/wikicreole.rb +2147 -0
- data/apps/wiki/lib/wikicreole.tt +135 -0
- data/apps/wiki/lib/wikitest.rb +158 -0
- data/apps/wiki/lib/wikitest.tt +17 -0
- data/apps/wiki/model/menu.rb +15 -0
- data/apps/wiki/model/page.rb +31 -0
- data/apps/wiki/spec/wiki_creole_spec.rb +20 -0
- data/apps/wiki/spec/wiki_spec.rb +19 -0
- data/apps/wiki/static/Zeichnung.svg +240 -0
- data/apps/wiki/static/home.css +134 -0
- data/apps/wiki/static/mainMenu.css +32 -0
- data/apps/wiki/static/menu.css +99 -0
- data/apps/wiki/views/_mainMenu.rhtml +3 -0
- data/apps/wiki/views/_menu.rhtml +13 -0
- data/apps/wiki/views/edit.rhtml +13 -0
- data/apps/wiki/views/index.rhtml +2 -0
- data/apps/wiki/views/save.rhtml +1 -0
- data/apps/wiki/wiki.rb +17 -0
- data/bin/appswarm +47 -0
- data/cucumber.yml +2 -0
- data/data/PermaspaceApp/AFS_WikiApp_wiki_config +6 -0
- data/data/draft.txt +63 -0
- data/docs/appswarm_motivation.graffle +0 -0
- data/docs/appswarm_pics.graffle/QuickLook/Preview.pdf +0 -0
- data/docs/appswarm_pics.graffle/QuickLook/Thumbnail.tiff +0 -0
- data/docs/appswarm_pics.graffle/data.plist +63494 -0
- data/docs/appswarm_pics.graffle/image1.tiff +0 -0
- data/docs/appswarm_pics.graffle/image2.tif +0 -0
- data/docs/appswarm_pics.graffle/image3.tif +0 -0
- data/docs/appswarm_pics.graffle/image4.tif +0 -0
- data/docs/appswarm_pics.graffle/image5.tiff +0 -0
- data/docs/routing.graffle +0 -0
- data/features/step_definitions/appstart_steps.rb +28 -0
- data/features/step_definitions/cluster_steps.rb +18 -0
- data/features/step_definitions/testbed_steps.rb +64 -0
- data/features/step_definitions/webapp_steps.rb +257 -0
- data/features/support/env.rb +7 -0
- data/lib/appswarm.rb +127 -0
- data/lib/appswarm/README.txt +67 -0
- data/lib/appswarm/app_config.rb +19 -0
- data/lib/appswarm/application.rb +267 -0
- data/lib/appswarm/breaking_mutex.rb +41 -0
- data/lib/appswarm/cluster_funcs.rb +157 -0
- data/lib/appswarm/cross_spectool.rb +153 -0
- data/lib/appswarm/crypt.rb +10 -0
- data/lib/appswarm/crypt/crypto.rb +90 -0
- data/lib/appswarm/crypt/rsa_key +15 -0
- data/lib/appswarm/crypt/rsa_key.pub +5 -0
- data/lib/appswarm/crypt/test.rb +27 -0
- data/lib/appswarm/dir_tool.rb +41 -0
- data/lib/appswarm/event_api.rb +7 -0
- data/lib/appswarm/features_helper.rb +44 -0
- data/lib/appswarm/global_service.rb +38 -0
- data/lib/appswarm/http.rb +1 -0
- data/lib/appswarm/http/http_app.rb +257 -0
- data/lib/appswarm/http/http_controller.rb +267 -0
- data/lib/appswarm/http/http_provider.rb +80 -0
- data/lib/appswarm/http/static/favicon.ico +0 -0
- data/lib/appswarm/http/static/javascript/._prototype.js +0 -0
- data/lib/appswarm/http/static/javascript/prototype.js +2515 -0
- data/lib/appswarm/http/webrick_logger.rb +12 -0
- data/lib/appswarm/net_service.rb +69 -0
- data/lib/appswarm/package.rb +88 -0
- data/lib/appswarm/parallel_each.rb +46 -0
- data/lib/appswarm/protocols/protocol_dice.rb +25 -0
- data/lib/appswarm/proxy_testing.rb +48 -0
- data/lib/appswarm/public_api.rb +35 -0
- data/lib/appswarm/routing/matrix_math.rb +57 -0
- data/lib/appswarm/routing/pca.rb +211 -0
- data/lib/appswarm/routing/routetest.rb +85 -0
- data/lib/appswarm/routing/routing.rb +326 -0
- data/lib/appswarm/routing/spec/nods_spec.rb +23 -0
- data/lib/appswarm/routing/spec/pca_spec.rb +27 -0
- data/lib/appswarm/routing/spec/routing_spec.rb +91 -0
- data/lib/appswarm/secure_con.rb +437 -0
- data/lib/appswarm/secure_connection.rb +79 -0
- data/lib/appswarm/secure_marshal.rb +137 -0
- data/lib/appswarm/service.rb +76 -0
- data/lib/appswarm/simple_marshal.rb +96 -0
- data/lib/appswarm/simple_marshal_parser.rb +1243 -0
- data/lib/appswarm/simple_marshal_parser.tt +158 -0
- data/lib/appswarm/spec/application_spec.rb +50 -0
- data/lib/appswarm/spec/cluster_spec.rb +2 -0
- data/lib/appswarm/spec/hexdist_spec.rb +13 -0
- data/lib/appswarm/spec/http_controller_spec.rb +18 -0
- data/lib/appswarm/spec/main_spec.rb +6 -0
- data/lib/appswarm/spec/parallel_each_spec.rb +30 -0
- data/lib/appswarm/spec/secure_connection_spec.rb +108 -0
- data/lib/appswarm/spec/secure_marshal_spec.rb +93 -0
- data/lib/appswarm/spec/simple_marshal_spec.rb +87 -0
- data/lib/appswarm/spec/tools_spec.rb +13 -0
- data/lib/appswarm/spec/whiteboard_spec.rb +20 -0
- data/lib/appswarm/spec_helper.rb +18 -0
- data/lib/appswarm/test_bed.rb +207 -0
- data/lib/appswarm/tools.rb +284 -0
- data/lib/appswarm/tools/http_tunnel_client.rb +139 -0
- data/lib/appswarm/tools/http_tunnel_common.rb +8 -0
- data/lib/appswarm/tools/http_tunnel_server.rb +78 -0
- data/lib/appswarm/tools/parser/example_data.simple +102 -0
- data/lib/appswarm/tools/parser/match_test.rb +14 -0
- data/lib/appswarm/tools/parser/parser_lib.rb +165 -0
- data/lib/appswarm/tools/parser/parser_test.rb +104 -0
- data/lib/appswarm/tools/parser/spec/parser_spec.rb +44 -0
- data/lib/appswarm/tools/pipes.rb +95 -0
- data/lib/appswarm/tools/spec/tracing_spec.rb +16 -0
- data/lib/appswarm/tools/spec/waiting_queue_spec.rb +15 -0
- data/lib/appswarm/tools/thread_tool.rb +61 -0
- data/lib/appswarm/tools/tracing.rb +84 -0
- data/lib/appswarm/tools/treetop_test.rb +20 -0
- data/lib/appswarm/tools/treetop_test_grammar.rb +114 -0
- data/lib/appswarm/tools/treetop_test_grammar.tt +7 -0
- data/lib/appswarm/tools/waiting_prio_queue.rb +47 -0
- data/lib/appswarm/tools/waiting_queue.rb +34 -0
- data/lib/appswarm/whiteboard.rb +73 -0
- data/nettest.rb +50 -0
- data/packages/README.txt +1 -0
- data/packages/msandbox/data/packages/store/my.txt +1 -0
- data/packages/msandbox/interfaces.rb +172 -0
- data/packages/msandbox/old/defa.rb +3 -0
- data/packages/msandbox/old/test.rb +14 -0
- data/packages/msandbox/old/test2.rb +56 -0
- data/packages/msandbox/package.rb +67 -0
- data/packages/msandbox/packages/store/config.yml +1 -0
- data/packages/msandbox/packages/store/main.rb +27 -0
- data/packages/msandbox/packages/store/myinclude.rb +7 -0
- data/packages/msandbox/packages/store_test/config.yml +1 -0
- data/packages/msandbox/packages/store_test/main.rb +9 -0
- data/packages/msandbox/server.rb +146 -0
- data/packages/msandbox/test.rb +13 -0
- data/packages/msandbox/test2.rb +29 -0
- data/templates/web/appswarm/controllers/appswarm.rb +41 -0
- data/templates/web/appswarm/layouts/main.rhtml +20 -0
- data/templates/web/appswarm/models/asmenu.rb +14 -0
- data/templates/web/appswarm/models/asuser.rb +30 -0
- data/templates/web/appswarm/static/custom.css +15 -0
- data/templates/web/appswarm/static/home.css +134 -0
- data/templates/web/appswarm/static/mainMenu.css +32 -0
- data/templates/web/appswarm/static/menu.css +99 -0
- data/templates/web/appswarm/views/_mainMenu.rhtml +5 -0
- data/templates/web/appswarm/views/_menu.rhtml +13 -0
- data/templates/web/appswarm/views/_userInfo.rhtml +7 -0
- data/templates/web/appswarm/views/login.rhtml +9 -0
- data/tools/checkPort.rb +11 -0
- metadata +379 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
Feature: Settings of applications
|
|
2
|
+
@settings2
|
|
3
|
+
|
|
4
|
+
Scenario: Creating and Removing http-app-instances
|
|
5
|
+
Given a testbed with a "LocalWebServer" application
|
|
6
|
+
And a "Admin" application in it
|
|
7
|
+
And a "HelloWorld" application in it
|
|
8
|
+
When I visit "/admin" on the "LocalWebServer"
|
|
9
|
+
And I click on "Settings HelloWorldApp"
|
|
10
|
+
Then the resulting html page contains a field "NewInstanceName"
|
|
11
|
+
When I enter "MyInstance" into "NewInstanceName"
|
|
12
|
+
And click on "CreateInstance"
|
|
13
|
+
Then the resulting html page contains "NewInstanceName"
|
|
14
|
+
And the "HelloWorld" application has a "MyInstance" instance
|
|
15
|
+
And the resulting html page contains "MyInstance"
|
|
16
|
+
When I click on "Delete" within the "MyInstance" form
|
|
17
|
+
Then the "HelloWorld" application has no "MyInstance" instance
|
|
18
|
+
And the resulting html page doesn't contain "MyInstance"
|
|
19
|
+
And the resulting html page contains "NewInstanceName"
|
|
20
|
+
|
|
21
|
+
@settings
|
|
22
|
+
|
|
23
|
+
Scenario: Publishing your http-app instance on a LocalWebServer
|
|
24
|
+
Given a testbed with a "LocalWebServer" application
|
|
25
|
+
And a "Admin" application in it
|
|
26
|
+
And a "HelloWorld" application in it
|
|
27
|
+
When I visit "/admin" on the "LocalWebServer"
|
|
28
|
+
And I click on "Settings HelloWorldApp"
|
|
29
|
+
Then the resulting html page contains a field "NewInstanceName"
|
|
30
|
+
When I enter "MyInstance" into "NewInstanceName"
|
|
31
|
+
And click on "Create Instance"
|
|
32
|
+
Then the resulting html page contains "NewInstanceName"
|
|
33
|
+
And the "HelloWorld" application has a "MyInstance" instance
|
|
34
|
+
When I visit "/admin" on the "LocalWebServer"
|
|
35
|
+
And I click on "Settings LocalWebServerApp"
|
|
36
|
+
Then the resulting html page contains "Settings"
|
|
37
|
+
When I enter "/hello" into "mountPath"
|
|
38
|
+
Then the resulting html page contains "HelloWorld"
|
|
39
|
+
When I select "HelloWorld" from "httpApp"
|
|
40
|
+
And I select "MyInstance" from "httpAppInstance"
|
|
41
|
+
When I click on "Add mount"
|
|
42
|
+
Then the resulting html page contains "/hello"
|
|
43
|
+
And the resulting html page contains "MyInstance"
|
|
44
|
+
When I visit "/hello" on the "LocalWebServer"
|
|
45
|
+
Then the resulting html page contains "Hello World"
|
|
46
|
+
And the resulting html page contains "MyInstance"
|
|
47
|
+
When I visit "/admin" on the "LocalWebServer"
|
|
48
|
+
And I click on "Settings LocalWebServerApp"
|
|
49
|
+
And I click on "Delete" within the "/hello" form
|
|
50
|
+
Then the resulting html page doesn't contain /MyInstance.* instance/
|
|
51
|
+
When I visit "/hello" on the "LocalWebServer"
|
|
52
|
+
Then it is given nothing
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
@settings_restart
|
|
56
|
+
Scenario: Restarting testbed leaves settings untouched
|
|
57
|
+
Given a testbed with a "LocalWebServer" application
|
|
58
|
+
And a "Admin" application in it
|
|
59
|
+
And a "HelloWorld" application in it
|
|
60
|
+
And I create a "test" instance on the "HelloWorld" http-application
|
|
61
|
+
Then the "HelloWorld" application has a "test" instance
|
|
62
|
+
When the "test" instance of "HelloWorld" is offered on path "/hello" on the "LocalWebServer" application
|
|
63
|
+
And it is restarted
|
|
64
|
+
Then the "HelloWorld" application has a "test" instance
|
|
65
|
+
And the "LocalWebServer" has "3" mounts
|
|
66
|
+
When I visit "/hello" on the "LocalWebServer"
|
|
67
|
+
Then the resulting html page contains "test"
|
|
68
|
+
# thus the instance is still there and mounted
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
Feature: Starting applications on startup
|
|
2
|
+
Appswarm should start all applications defined within BASIC_APPS at startup.
|
|
3
|
+
Apart from this it should start applications that were used in the last session.
|
|
4
|
+
|
|
5
|
+
@startup
|
|
6
|
+
Scenario: Startup from scratch
|
|
7
|
+
Given a testbed
|
|
8
|
+
When the cluster is running
|
|
9
|
+
Then one "Admin" application should be running
|
|
10
|
+
And one "LocalFileStore" application should be running
|
|
11
|
+
And one "LocalWebServer" application should be running
|
|
12
|
+
And one "Permaspace" application should be running
|
|
13
|
+
And one "Home" application should be running
|
|
14
|
+
And one "SessionManager" application should be running
|
|
15
|
+
|
|
16
|
+
Scenario: Starting an application, stopping the cluster and restoring the application
|
|
17
|
+
Given a testbed with a "Admin" application
|
|
18
|
+
And a "Wiki" application in it
|
|
19
|
+
When it is restarted
|
|
20
|
+
Then one "Admin" application should be running
|
|
21
|
+
And one "LocalFileStore" application should be running
|
|
22
|
+
And one "LocalWebServer" application should be running
|
|
23
|
+
And one "Permaspace" application should be running
|
|
24
|
+
And one "Home" application should be running
|
|
25
|
+
And one "Wiki" application should be running
|
|
26
|
+
And one "SessionManager" application should be running
|
|
27
|
+
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
class AdminAppSettings
|
|
2
|
+
def self.data(mapping)
|
|
3
|
+
pp mapping
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
attr_reader :data
|
|
7
|
+
|
|
8
|
+
def initialize(app)
|
|
9
|
+
@app=app
|
|
10
|
+
@data={}
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def []=(name,value)
|
|
14
|
+
@data[name]=value
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def buildForm
|
|
18
|
+
@data.map{|setting|
|
|
19
|
+
|
|
20
|
+
}
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
class SomeSettings
|
|
26
|
+
def initialize(app)
|
|
27
|
+
@app=app
|
|
28
|
+
end
|
|
29
|
+
def valuesFor(input)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
class StringSetting
|
|
35
|
+
def htmlField(name)
|
|
36
|
+
"<input type='input' name='#{name}'>#{value}</input>"
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
class HTTPInstanceSetting
|
|
41
|
+
def htmlField(name)
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def possibleHttpApps
|
|
46
|
+
@app.cluster.getApps(HTTPApp).map{|app|app.getAppName}
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def possibleInstances(httpApp)
|
|
50
|
+
@app.cluster.getAppByName(httpApp).instances
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
table.log
|
|
2
|
+
{
|
|
3
|
+
font-size:8pt;
|
|
4
|
+
font-family: monospace;
|
|
5
|
+
border: 1px solid black;
|
|
6
|
+
}
|
|
7
|
+
table.log tr.odd
|
|
8
|
+
{
|
|
9
|
+
background-color:#AAAAFF;
|
|
10
|
+
}
|
|
11
|
+
table.log tr.even
|
|
12
|
+
{
|
|
13
|
+
background-color:#CCCCFF;
|
|
14
|
+
}
|
|
15
|
+
table.log td
|
|
16
|
+
{
|
|
17
|
+
vertical-align:top;
|
|
18
|
+
|
|
19
|
+
}
|
|
20
|
+
table.log td.what
|
|
21
|
+
{
|
|
22
|
+
width:40em;
|
|
23
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<div id='log'
|
|
2
|
+
<table class='log'>
|
|
3
|
+
<script language='javascript'>
|
|
4
|
+
function mreload()
|
|
5
|
+
{
|
|
6
|
+
x=new Ajax.Updater('log', '/admin/_log', { method: 'get' });
|
|
7
|
+
setTimeout('mreload();',2000);
|
|
8
|
+
}
|
|
9
|
+
setTimeout('mreload();',2000);
|
|
10
|
+
</script>
|
|
11
|
+
<%
|
|
12
|
+
loglist.each{|entry| %>
|
|
13
|
+
<tr class='<%=count(:tr,2)==0?"odd":"even"%>'>
|
|
14
|
+
<td><%=entry.time.to_s.to_h%></td>
|
|
15
|
+
<td><%=entry.klass.to_s.to_h%></td>
|
|
16
|
+
<td><%=entry.appname.to_s.to_h%></td>
|
|
17
|
+
<td class='what'><%=entry.what.to_h%></td>
|
|
18
|
+
</tr>
|
|
19
|
+
<% } %>
|
|
20
|
+
</table>
|
|
21
|
+
</div>
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<table>
|
|
2
|
+
<% i=0 %>
|
|
3
|
+
<% apps.each{|a| %>
|
|
4
|
+
<tr>
|
|
5
|
+
<td>
|
|
6
|
+
<%=i+=1%>
|
|
7
|
+
</td>
|
|
8
|
+
<td>
|
|
9
|
+
<a href='/admin/info/<%=a.getAppName%>'><%=a.getAppName%></a>
|
|
10
|
+
</td>
|
|
11
|
+
<td>
|
|
12
|
+
<%=a.class.to_s.to_h %>
|
|
13
|
+
</td>
|
|
14
|
+
<td>
|
|
15
|
+
<a href='/admin/stop/<%=a.object_id%>'>Stop</a>
|
|
16
|
+
</td>
|
|
17
|
+
<td>
|
|
18
|
+
<a href='/admin/settings/index/<%=a.object_id%>'>Settings <%=a.class.to_s.to_h%></a>
|
|
19
|
+
</td>
|
|
20
|
+
<td><%=a.getAppId%></td>
|
|
21
|
+
<% if a.is_a?(HTTPApp) %>
|
|
22
|
+
<td>
|
|
23
|
+
<a href='<%=a.url%>'>Link</a>
|
|
24
|
+
</td>
|
|
25
|
+
<% end %>
|
|
26
|
+
</tr>
|
|
27
|
+
<% } %>
|
|
28
|
+
</table>
|
|
29
|
+
<hr>
|
|
30
|
+
Application-Types
|
|
31
|
+
<table>
|
|
32
|
+
<% appTypes.each{|apptype| %>
|
|
33
|
+
<tr>
|
|
34
|
+
<td><%=apptype%> </td>
|
|
35
|
+
<td ><a href="/admin/start/<%=apptype %>">Start <%=apptype%></a></td>
|
|
36
|
+
</tr>
|
|
37
|
+
<% } %>
|
|
38
|
+
</table>
|
|
39
|
+
<hr>
|
|
40
|
+
<a href='/admin/shutdown'>Shutdown</a>
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
<%= render_partial :log %>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<% instances.each{|instance| %>
|
|
2
|
+
<li>
|
|
3
|
+
<%=instance.instanceName%>
|
|
4
|
+
<form method="POST" action="<%=url(:action=>:del)%>/<%=@targetApp.object_id%>" name="<%=instance.instanceName%>">
|
|
5
|
+
<button name="delete">Delete</button>
|
|
6
|
+
<input type="hidden" name="instanceName" value="<%=instance.instanceName%>" />
|
|
7
|
+
</form>
|
|
8
|
+
</li>
|
|
9
|
+
<% } %>
|
|
10
|
+
|
|
11
|
+
<form method="POST" action="<%=url(:action=>:add)%>">
|
|
12
|
+
<input type="hidden" name="appId" value="<%=@targetApp.object_id%>" />
|
|
13
|
+
<input type="text" name="NewInstanceName" />
|
|
14
|
+
<button name="CreateInstance">Create Instance</button>
|
|
15
|
+
</form>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
Current mount points:
|
|
2
|
+
<ul>
|
|
3
|
+
<% @targetApp.mounts.each{|mount| %>
|
|
4
|
+
<li>
|
|
5
|
+
<a href="<%="/"+mount.mountPoint%>">
|
|
6
|
+
"<%=mount.mountPoint%>" to "<%=mount.instance.instanceName%>" instance of <%=mount.instance.instanceType%>
|
|
7
|
+
</a>
|
|
8
|
+
<form method="POST" action="<%=url(:action=>:del)%>/<%=@targetApp.object_id%>" name="<%=mount.mountPoint%>">
|
|
9
|
+
<button name="delete" value="Delete">Delete</button>
|
|
10
|
+
<input type="hidden" name="mount" value="<%=mount.mountPoint%>" />
|
|
11
|
+
</form>
|
|
12
|
+
</li>
|
|
13
|
+
<% } %>
|
|
14
|
+
</ul>
|
|
15
|
+
|
|
16
|
+
Create new mount point:
|
|
17
|
+
<form method="POST" action="<%=url(:action=>:addMount)%>/<%=@targetApp.object_id%>">
|
|
18
|
+
<input type="text" name="mountPath">/</input>
|
|
19
|
+
<select name="httpApp">
|
|
20
|
+
<% @targetApp.cluster.getApps(:httpApp).each{|httpApp| %>
|
|
21
|
+
<option value="<%=httpApp.getAppName%>"><%=httpApp.shortName%></option>
|
|
22
|
+
<% } %>
|
|
23
|
+
</select>
|
|
24
|
+
<select name="httpAppInstance">
|
|
25
|
+
<% @targetApp.cluster.getApps(:httpApp).map{|app|app.instances}.flatten.each{|instance| %>
|
|
26
|
+
<option value="<%=instance.instanceName%>"><%=instance.instanceName%></option>
|
|
27
|
+
<% } %>
|
|
28
|
+
</select>
|
|
29
|
+
<button name="Add mount">Add mount</button>
|
|
30
|
+
</form>
|
|
31
|
+
|
|
32
|
+
|
data/apps/blog/blog.rb
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'http.rb'
|
|
2
|
+
|
|
3
|
+
class BlogApp<HTTPApp
|
|
4
|
+
requires :localTupleSpace
|
|
5
|
+
def initialize(*ops)
|
|
6
|
+
super
|
|
7
|
+
u=url
|
|
8
|
+
withAppFork(:directoryService) do
|
|
9
|
+
loop do
|
|
10
|
+
begin
|
|
11
|
+
log "Trying to register blog"
|
|
12
|
+
register(u,"blog")
|
|
13
|
+
log "Registered blog"
|
|
14
|
+
begin
|
|
15
|
+
assert{lookup(u)=="blog"}
|
|
16
|
+
rescue Object=>e
|
|
17
|
+
log e,e.backtrace
|
|
18
|
+
end
|
|
19
|
+
break
|
|
20
|
+
rescue NetApplication::NotInitialized=>e
|
|
21
|
+
#pp e
|
|
22
|
+
log "Failed to register blog",e
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
class Entry
|
|
2
|
+
attr_reader :body, :title
|
|
3
|
+
def initialize(params)
|
|
4
|
+
@body=params["body"].to_s
|
|
5
|
+
@title=params["title"].to_s
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
class Blog<HTTPController
|
|
10
|
+
def initialize(app)
|
|
11
|
+
super
|
|
12
|
+
|
|
13
|
+
@tspace=app.cluster.getApp(:localTupleSpace)
|
|
14
|
+
end
|
|
15
|
+
def index(*s)
|
|
16
|
+
@entries=@tspace.read(:entries)
|
|
17
|
+
@entries||=[]
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def add
|
|
21
|
+
puts "ADD"
|
|
22
|
+
entries=@tspace.lend(:entries)
|
|
23
|
+
entries||=[]
|
|
24
|
+
entries << Entry.new(params)
|
|
25
|
+
@tspace.store(:entries,entries)
|
|
26
|
+
|
|
27
|
+
redirect_to(url(:action=>:index))
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<html>
|
|
2
|
+
<body>
|
|
3
|
+
BLOG
|
|
4
|
+
|
|
5
|
+
<%=tspace.to_s%>
|
|
6
|
+
|
|
7
|
+
<%=params.inspect%>
|
|
8
|
+
|
|
9
|
+
<br>
|
|
10
|
+
<% entries.each{|entry| %>
|
|
11
|
+
<h3><%=entry.title%></h3>
|
|
12
|
+
<p><%=entry.body%></p>
|
|
13
|
+
|
|
14
|
+
<% } %>
|
|
15
|
+
|
|
16
|
+
<br>
|
|
17
|
+
|
|
18
|
+
<form method='POST' action='/blog/add'>
|
|
19
|
+
<input type='text' name='title' />
|
|
20
|
+
<br>
|
|
21
|
+
<textarea name='body'></textarea>
|
|
22
|
+
<br>
|
|
23
|
+
<input type='submit'>
|
|
24
|
+
</form>
|
|
25
|
+
|
|
26
|
+
</body>
|
|
27
|
+
</html>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'application.rb'
|
|
2
|
+
|
|
3
|
+
class BrowserStarterApp<Application
|
|
4
|
+
def initialize(*s)
|
|
5
|
+
super
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def run
|
|
9
|
+
dirs=["/Applications/*/Contents/MacOS","/Applications/*/*/Contents/MacOS",
|
|
10
|
+
"/usr/bin","/usr/local/bin","/opt/bin"
|
|
11
|
+
]
|
|
12
|
+
browsers=["firefox"]
|
|
13
|
+
|
|
14
|
+
bs=browsers.map{|b|
|
|
15
|
+
dirs.map{|d|
|
|
16
|
+
f=File.join(d,b)
|
|
17
|
+
pp f
|
|
18
|
+
Dir[f]
|
|
19
|
+
}}.flatten
|
|
20
|
+
|
|
21
|
+
browser=bs[0]
|
|
22
|
+
|
|
23
|
+
pp "BS:",bs
|
|
24
|
+
|
|
25
|
+
if browser
|
|
26
|
+
system "#{browser} http://localhost:4000"
|
|
27
|
+
else
|
|
28
|
+
# the windows-way
|
|
29
|
+
system "start http://localhost:4000"
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|