source: java/main/src/test/java/com/framsticks/hosting/ServerTest.java @ 98

Last change on this file since 98 was 98, checked in by psniegowski, 11 years ago

HIGHLIGHTS:

CHANGELOG:
Get data also on tree expansion.

Use nice framstick icon for empty nodes.

Update panel after reload if it is current.

Add shallow reload procedure.

Cut Gui prefix from several tree classes.

Bring back counter of GuiTreeNode?.

Use IdentityHashMap? were it is more appriopriate.

Remove TreeListener?.

Do not use TreeListener? in GUI.

Minor change.

Done migration to GuiTreeModel?.

BrowserTest? in that version always crashes frams.linux.

Move rendering implementation into GuiAbstractNode?.

Use hand-crafted list in GuiTreeNode?.

Generally, it would be a great place for WeakIdentityHashMap?
(but there is none in Java Collection Framework).

Remove superfluous logging.

Fix bug in GuiTreeNode?.

Use IdentityHashMap? instead of HashMap?.

Improve structure update.

Filter out invalid uids in UniqueListAccess?.

Improve TreeCellRenderer?.

Add filtering in TrackConsole?.

Improve TreeModel?.

More changes.

More improvements.

More changes.

Remove TreeNode?.

Support MetaNode? in the GuiTreeModel?.

Implement more in GuiTreeModel?.

Add CompositeParam? interface to FramsClass? and AccessInterface?.

Allow access by number to UniqueList?.

Add UidComparator?.

Use TreeMap? as a default accessee in unique list.

It keeps order of keys.

Introduce classes to use with new TreeModel?.

Another step.

Migrate from TreeNode? to Node in many places.

Remove some uses of TreeNode? as DefaultMutableTreeNode?.

Remove Path from TreeNode? interface.

Remove Path from TreeNode?.

Add Path recration from node feature.

Reworking TreeCellRenderer?.

Minor change of TreeOperations? interface.

Remove last methods from TreeNode?.

Another minor step.

Do not store reference to TreeAtFrame? in TreeNode?.

Add proxy exceptionHandler to StatusBar?.

Move panels management to TreeAtFrame?.

Store localChanges in the NodeAtFrame?.

More cleanup.

Move name computing to TreeCellRenderer?.

Move tooltip and icon computations to TreeCellRenderer?.

More dispatches removed.

Remove most dispatching from TreeNode?.

TreeNode? does not actually redispatch tasks.

Make Tree embedded in Browser use SwingDispatcher?.

Make lazy binding of Tree with Dispatcher.

Minor changes.

Organizational change in AbstractTree?.

Make AbstractTree? compose from Thread instead of inherit from it.

Make SwingDispatcher? and AtOnceDispatcher? Joinable compatible.

Add ListPanelProvider?.

Improve Controls readonly and enabled handling.

Properly pass ExceptionHandlers? in more places.

Make Tree.get accept ValueParam?.

  • This is to allow access number of list elements.

Remove not needed get redirection in ClientAtServer?.

Rename tryResolve to tryGet.

Unify tryResolveAndGet into tryResolve.

Remove resolveTop from Tree interface.

Make Tree.get accept Future<Path>.

Use get to implement resolveTop also in ObjectTree?.

Unify resolveTop and get in RemoteTree?.

Another minor step.

More minor changes in tree operations.

Minor organizational changes.

In RemoteTree? first fetch info for root.

Reworking resolving.

Minor changes.

Make ListAccess? return proxy iterators (instead of creating temporary collection).

Let AccessInterface? return Iterable<Param>.

Improve resolving.

More improvements.

First working completion in ManagedConsole?.

Rename resolve to resolveTop.

This reflects the actuall functionality.

Change semantic of tryResolve and tryResolveAndGet.

File size: 4.5 KB
Line 
1package com.framsticks.hosting;
2
3// import org.apache.log4j.Logger;
4import org.testng.annotations.Test;
5
6import com.framsticks.core.Mode;
7import com.framsticks.core.ObjectTree;
8import com.framsticks.core.Path;
9import com.framsticks.core.XmlBasedTest;
10import com.framsticks.remote.RemoteTree;
11
12import com.framsticks.test.TestClass;
13import com.framsticks.core.Tree;
14import com.framsticks.params.FramsClass;
15import com.framsticks.util.dispatching.Dispatching;
16import com.framsticks.params.AccessInterface;
17import com.framsticks.params.PrimitiveParam;
18import com.framsticks.params.PropertiesAccess;
19import com.framsticks.params.types.ProcedureParam;
20import com.framsticks.util.dispatching.Dispatching.Waiter;
21import com.framsticks.util.dispatching.FutureHandler;
22import com.framsticks.util.dispatching.RunAt;
23
24import static com.framsticks.core.TreeOperations.*;
25
26import static org.fest.assertions.Assertions.*;
27
28@Test
29public class ServerTest extends XmlBasedTest {
30
31        protected RemoteTree remote;
32        protected FramsClass remoteTestFramsClass;
33        protected Path remotePath;
34
35        protected Server server;
36        protected ObjectTree hosted;
37        protected TestClass hostedObject;
38
39        @Override
40        protected String getConfigurationName() {
41                return "ServerTest.xml";
42        }
43
44        @Test
45        public void runServer() {
46                assertThat(framsticks.size()).isEqualTo(2);
47                assertThat(framsticks.get("test")).isInstanceOf(Server.class);
48                assertThat(framsticks.get("remote")).isInstanceOf(RemoteTree.class);
49
50                server = (Server) framsticks.get("test");
51                remote = (RemoteTree) framsticks.get("remote");
52                assertThat(server.getHosted()).isInstanceOf(ObjectTree.class);
53                hosted = (ObjectTree) server.getHosted();
54                assertThat(hosted.getRootObject()).isInstanceOf(TestClass.class);
55                hostedObject = hosted.getRootObject(TestClass.class);
56        }
57
58        @Test(dependsOnMethods = "runServer")
59        public void fetchInfo() {
60                remote.dispatch(new RunAt<Tree>(failOnException) {
61                        @Override
62                        protected void runAt() {
63                                remote.info(Path.to(remote, "/"), new FutureHandler<FramsClass>(failOnException) {
64                                        @Override
65                                        protected void result(FramsClass result) {
66                                                remoteTestFramsClass = result;
67                                                assertThat(result.getId()).isEqualTo("TestClass");
68                                        }
69                                });
70                        }
71                });
72
73                Dispatching.synchronize(remote, 1.0);
74        }
75
76        @Test(dependsOnMethods = "fetchInfo")
77        public void resolveAndfetchRootObject() {
78                final Waiter waiter = produceWaiter(1.0);
79
80                remote.dispatch(new RunAt<Tree>(failOnException) {
81                        @Override
82                        protected void runAt() {
83                                final Path path = Path.to(remote, "/");
84                                assertThat(path.isResolved()).isFalse();
85
86                                remote.get(path, Mode.FETCH, new FutureHandler<Path>(failOnException) {
87                                        @Override
88                                        protected void result(Path path) {
89                                                assertThat(path.isResolved()).isTrue();
90                                                remotePath = path;
91                                                AccessInterface access = bindAccess(path);
92                                                assertThat(access).isInstanceOf(PropertiesAccess.class);
93                                                assertThat(access.get("name", String.class)).isEqualTo("a test name");
94                                                waiter.pass();
95                                        }
96                                });
97                        }
98                });
99        }
100
101        @Test(dependsOnMethods = "resolveAndfetchRootObject")
102        public void setValueName() {
103                final Waiter waiter = produceWaiter(2.0);
104
105                set(remotePath, remoteTestFramsClass.getParamEntry("name", PrimitiveParam.class), "new name", new FutureHandler<Integer>(failOnException) {
106                        @Override
107                        protected void result(Integer flags) {
108                                // assertThat(flags).isEqualTo(0);
109                                /** And now check directly whether it was really set. */
110                                hosted.dispatch(new RunAt<Tree>(failOnException) {
111                                        @Override
112                                        protected void runAt() {
113                                                assertThat(hostedObject.getName()).isEqualTo("new name");
114                                                waiter.pass();
115                                        }
116                                });
117                        }
118                });
119        }
120
121        @Test(dependsOnMethods = "setValueName")
122        public void callMethod() {
123                final Waiter firstWaiter = produceWaiter(2.0);
124                final Waiter waiter = produceWaiter(2.0);
125
126                call(remotePath, remoteTestFramsClass.getParamEntry("resetHistory", ProcedureParam.class), new Object[] {}, new FutureHandler<Object>(failOnException) {
127                        @Override
128                        protected void result(Object result) {
129                                firstWaiter.pass();
130                        }
131                });
132
133                call(remotePath, remoteTestFramsClass.getParamEntry("appendHistory", ProcedureParam.class), new Object[] {"next word"}, new FutureHandler<Object>(failOnException) {
134                        @Override
135                        protected void result(Object result) {
136                                hosted.dispatch(new RunAt<Tree>(failOnException) {
137                                        @Override
138                                        protected void runAt() {
139                                                assertThat(hostedObject.getHistory()).isEqualTo("next word|");
140                                                waiter.pass();
141                                        }
142                                });
143                        }
144                });
145
146        }
147
148        @Test(dependsOnMethods = "callMethod")
149        public void endWait() {
150                monitor.useFor(1.0);
151        }
152}
Note: See TracBrowser for help on using the repository browser.