~ubuntu-branches/ubuntu/oneiric/tomcat7/oneiric-updates

« back to all changes in this revision

Viewing changes to test/org/apache/catalina/tribes/test/membership/TestMemberArrival.java

  • Committer: Bazaar Package Importer
  • Author(s): tony mancill
  • Date: 2011-07-25 22:58:33 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20110725225833-1t773ak3y3g9utm2
Tags: 7.0.19-1
* Team upload.
* New upstream release.
  - Includes fix for CVE-2011-2526 (Closes: #634992)
* Remove patch for CVE-2011-2204 (included upstream).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Licensed to the Apache Software Foundation (ASF) under one or more
3
 
 * contributor license agreements.  See the NOTICE file distributed with
4
 
 * this work for additional information regarding copyright ownership.
5
 
 * The ASF licenses this file to You under the Apache License, Version 2.0
6
 
 * (the "License"); you may not use this file except in compliance with
7
 
 * the License.  You may obtain a copy of the License at
8
 
 *
9
 
 *      http://www.apache.org/licenses/LICENSE-2.0
10
 
 *
11
 
 * Unless required by applicable law or agreed to in writing, software
12
 
 * distributed under the License is distributed on an "AS IS" BASIS,
13
 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
 
 * See the License for the specific language governing permissions and
15
 
 * limitations under the License.
16
 
 */
17
 
package org.apache.catalina.tribes.test.membership;
18
 
 
19
 
import java.util.ArrayList;
20
 
 
21
 
import junit.framework.TestCase;
22
 
 
23
 
import org.apache.catalina.tribes.Channel;
24
 
import org.apache.catalina.tribes.ManagedChannel;
25
 
import org.apache.catalina.tribes.Member;
26
 
import org.apache.catalina.tribes.MembershipListener;
27
 
import org.apache.catalina.tribes.group.GroupChannel;
28
 
 
29
 
public class TestMemberArrival
30
 
    extends TestCase {
31
 
    private static int count = 10;
32
 
    private ManagedChannel[] channels = new ManagedChannel[count];
33
 
    private TestMbrListener[] listeners = new TestMbrListener[count];
34
 
 
35
 
    @Override
36
 
    protected void setUp() throws Exception {
37
 
        super.setUp();
38
 
        for (int i = 0; i < channels.length; i++) {
39
 
            channels[i] = new GroupChannel();
40
 
            channels[i].getMembershipService().setPayload( ("Channel-" + (i + 1)).getBytes("ASCII"));
41
 
            listeners[i] = new TestMbrListener( ("Listener-" + (i + 1)));
42
 
            channels[i].addMembershipListener(listeners[i]);
43
 
 
44
 
        }
45
 
    }
46
 
 
47
 
    public void clear() {
48
 
        for (int i = 0; i < channels.length; i++) {
49
 
            listeners[i].members.clear();
50
 
        }
51
 
    }
52
 
 
53
 
    public void testMemberArrival() throws Exception {
54
 
        //purpose of this test is to make sure that we have received all the members
55
 
        //that we can expect before the start method returns
56
 
        Thread[] threads = new Thread[channels.length];
57
 
        for (int i=0; i<channels.length; i++ ) {
58
 
            final Channel channel = channels[i];
59
 
            Thread t = new Thread() {
60
 
                @Override
61
 
                public void run() {
62
 
                    try {
63
 
                        channel.start(Channel.DEFAULT);
64
 
                    }catch ( Exception x ) {
65
 
                        throw new RuntimeException(x);
66
 
                    }
67
 
                }
68
 
            };
69
 
            threads[i] = t;
70
 
        }
71
 
        for (int i=0; i<threads.length; i++ ) threads[i].start();
72
 
        for (int i=0; i<threads.length; i++ ) threads[i].join();
73
 
        Thread.sleep(2000);
74
 
        System.out.println("All channels started.");
75
 
        for (int i=listeners.length-1; i>=0; i-- ) assertEquals("Checking member arrival length",channels.length-1,listeners[i].members.size());
76
 
    }
77
 
 
78
 
    @Override
79
 
    protected void tearDown() throws Exception {
80
 
 
81
 
        for (int i = 0; i < channels.length; i++) {
82
 
            try {
83
 
                channels[i].stop(Channel.DEFAULT);
84
 
            } catch (Exception ignore) {
85
 
                // Ignore
86
 
            }
87
 
        }
88
 
        super.tearDown();
89
 
    }
90
 
 
91
 
    public static class TestMbrListener
92
 
        implements MembershipListener {
93
 
        public String name = null;
94
 
        public TestMbrListener(String name) {
95
 
            this.name = name;
96
 
        }
97
 
 
98
 
        public ArrayList<Member> members = new ArrayList<Member>();
99
 
        @Override
100
 
        public void memberAdded(Member member) {
101
 
            if (!members.contains(member)) {
102
 
                members.add(member);
103
 
                try {
104
 
                    System.out.println(name + ":member added[" + new String(member.getPayload(), "ASCII") + "; Thread:"+Thread.currentThread().getName()+"]");
105
 
                } catch (Exception x) {
106
 
                    System.out.println(name + ":member added[unknown]");
107
 
                }
108
 
            }
109
 
        }
110
 
 
111
 
        @Override
112
 
        public void memberDisappeared(Member member) {
113
 
            if (members.contains(member)) {
114
 
                members.remove(member);
115
 
                try {
116
 
                    System.out.println(name + ":member disappeared[" + new String(member.getPayload(), "ASCII") + "; Thread:"+Thread.currentThread().getName()+"]");
117
 
                } catch (Exception x) {
118
 
                    System.out.println(name + ":member disappeared[unknown]");
119
 
                }
120
 
            }
121
 
        }
122
 
 
123
 
    }
124
 
 
125
 
}