001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU General
007: * Public License Version 2 only ("GPL") or the Common Development and Distribution
008: * License("CDDL") (collectively, the "License"). You may not use this file except in
009: * compliance with the License. You can obtain a copy of the License at
010: * http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
011: * License for the specific language governing permissions and limitations under the
012: * License. When distributing the software, include this License Header Notice in
013: * each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP. Sun
014: * designates this particular file as subject to the "Classpath" exception as
015: * provided by Sun in the GPL Version 2 section of the License file that
016: * accompanied this code. If applicable, add the following below the License Header,
017: * with the fields enclosed by brackets [] replaced by your own identifying
018: * information: "Portions Copyrighted [year] [name of copyright owner]"
019: *
020: * Contributor(s):
021: *
022: * The Original Software is NetBeans. The Initial Developer of the Original Software
023: * is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
024: * Rights Reserved.
025: *
026: * If you wish your version of this file to be governed by only the CDDL or only the
027: * GPL Version 2, indicate your decision by adding "[Contributor] elects to include
028: * this software in this distribution under the [CDDL or GPL Version 2] license." If
029: * you do not indicate a single choice of license, a recipient has the option to
030: * distribute your version of this file under either the CDDL, the GPL Version 2 or
031: * to extend the choice of license to its licensees as provided above. However, if
032: * you add GPL Version 2 code and therefore, elected the GPL Version 2 license, then
033: * the option applies only if the new code is made subject to such option by the
034: * copyright holder.
035: */
036:
037: package org.downloader;
038:
039: import java.io.File;
040: import org.MyTestCase;
041: import org.netbeans.installer.downloader.DownloadListener;
042: import org.netbeans.installer.downloader.Pumping;
043: import org.netbeans.installer.downloader.Pumping.Section;
044: import org.netbeans.installer.downloader.queue.DispatchedQueue;
045: import org.netbeans.installer.downloader.services.EmptyQueueListener;
046: import org.server.TestDataGenerator;
047: import org.server.WithServerTestCase;
048:
049: /**
050: *
051: * @author Danila_Dugurov
052: */
053: public class WorkabilityTest extends WithServerTestCase {
054:
055: public void testStepByStepWorkability() {
056: final DispatchedQueue queue = new DispatchedQueue(new File(
057: MyTestCase.testWD, "queueState.xml"));
058: final DownloadListener listener = new EmptyQueueListener() {
059: int i = 0;
060:
061: public void pumpingStateChange(String id) {
062: final Pumping pumping = queue.getById(id);
063: System.out.println("pumping file "
064: + pumping.outputFile() + " " + pumping.state());
065: if (pumping.state() == Pumping.State.FINISHED) {
066: assertEquals(pumping.length(),
067: TestDataGenerator.testFileSizes[i++]);
068: synchronized (WorkabilityTest.this ) {
069: WorkabilityTest.this .notify();
070: }
071: } else if (pumping.state() == Pumping.State.FAILED) {
072: fail();
073: }
074: }
075:
076: public void pumpingUpdate(String id) {
077: // System.out.print("Update downloading file.." + queue.getById(id).outputFile().getName());
078: // System.out.println(" Size = " + downperc(queue.getById(id)));
079: }
080:
081: private long downperc(Pumping pumping) {
082: long size = 0;
083: for (Section section : pumping.getSections()) {
084: size += section.offset()
085: - section.getRange().getFirst();
086: }
087: return /*pumping.length() > 0 ? size * 100 / pumping.length():*/size;
088: }
089: };
090: queue.addListener(listener);
091: assertFalse(queue.isActive());
092: queue.invoke();
093: assertTrue(queue.isActive());
094: int i = 0;
095: while (i < TestDataGenerator.testUrls.length) {
096: synchronized (this ) {
097: queue.add(TestDataGenerator.testUrls[i],
098: MyTestCase.testOutput);
099: try {
100: wait();
101: } catch (InterruptedException ex) {
102: fail();
103: }
104: }
105: i++;
106: }
107: queue.terminate();
108: }
109:
110: public void testConcurrentlyWorkability() {
111: final DispatchedQueue queue = new DispatchedQueue(new File(
112: MyTestCase.testWD, "queueState.xml"));
113: final DownloadListener listener = new EmptyQueueListener() {
114: int i = 0;
115:
116: public void pumpingStateChange(String id) {
117: final Pumping pumping = queue.getById(id);
118: System.out.println("pumping file "
119: + pumping.outputFile() + " " + pumping.state());
120: if (pumping.state() == Pumping.State.FINISHED) {
121: i++;
122: if (i == TestDataGenerator.testUrls.length) {
123: synchronized (WorkabilityTest.this ) {
124: WorkabilityTest.this .notify();
125: }
126: }
127: } else if (pumping.state() == Pumping.State.FAILED) {
128: fail();
129: }
130: }
131:
132: public void pumpingUpdate(String id) {
133: // System.out.print("Update downloading file.." + queue.getById(id).outputFile().getName());
134: // System.out.println(" Size = " + downperc(queue.getById(id)));
135: }
136:
137: private long downperc(Pumping pumping) {
138: long size = 0;
139: for (Section section : pumping.getSections()) {
140: size += section.offset()
141: - section.getRange().getFirst();
142: }
143: return /*pumping.length() > 0 ? size * 100 / pumping.length():*/size;
144: }
145: };
146: queue.addListener(listener);
147: queue.invoke();
148: int i = 0;
149: while (i < TestDataGenerator.testUrls.length) {
150: queue.add(TestDataGenerator.testUrls[i],
151: MyTestCase.testOutput);
152: i++;
153: }
154: synchronized (this ) {
155: try {
156: wait();
157: } catch (InterruptedException ex) {
158: fail();
159: }
160: }
161: queue.terminate();
162: }
163: }
|