/* * Copyright 2008-2009 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package test.net.hasor.rsf.functions; import net.hasor.core.Hasor; import net.hasor.rsf.InterAddress; import net.hasor.rsf.address.AddressBucket; import net.hasor.rsf.address.RouteTypeEnum; import net.hasor.rsf.rpc.context.DefaultRsfEnvironment; import net.hasor.rsf.utils.IOUtils; import net.hasor.rsf.utils.ResourcesUtils; import org.junit.Test; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.net.URISyntaxException; /** * * @version : 2014年9月12日 * @author 赵永春(zyc@hasor.net) */ public class BucketTest { @Test public void saveToZipTest() throws URISyntaxException, IOException { DefaultRsfEnvironment rsfEnv = new DefaultRsfEnvironment(Hasor.createAppContext().getEnvironment()); String serviceID = "tttt"; BuildBucketBuild buildBucket = new BuildBucketBuild(serviceID, rsfEnv).invoke(); AddressBucket bucket = buildBucket.getBucket(); // String flowBody = IOUtils.readToString(ResourcesUtils.getResourceAsStream("/flow-control/full-flow.xml")); bucket.updateFlowControl(flowBody); // String scriptBody1 = IOUtils.readToString(ResourcesUtils.getResourceAsStream("/rule-script/service-level.groovy")); bucket.updateRoute(RouteTypeEnum.ServiceLevel, scriptBody1); // String scriptBody2 = IOUtils.readToString(ResourcesUtils.getResourceAsStream("/rule-script/method-level.groovy")); bucket.updateRoute(RouteTypeEnum.MethodLevel, scriptBody2); // String scriptBody3 = IOUtils.readToString(ResourcesUtils.getResourceAsStream("/rule-script/args-level.groovy")); bucket.updateRoute(RouteTypeEnum.ArgsLevel, scriptBody3); // File outFile = new File(rsfEnv.getPluginDir(BucketTest.class), serviceID + ".zip"); outFile.getParentFile().mkdirs(); FileOutputStream out = new FileOutputStream(outFile, false); bucket.saveToZip(out); out.flush(); out.close(); } @Test public void readFormZipTest() throws IOException, URISyntaxException { this.saveToZipTest(); // DefaultRsfEnvironment rsfEnv = new DefaultRsfEnvironment(Hasor.createAppContext().getEnvironment()); String serviceID = "tttt"; BuildBucketBuild buildBucket = new BuildBucketBuild(serviceID, rsfEnv).invoke(); AddressBucket bucket = buildBucket.getBucket(); // File inFile = new File(rsfEnv.getPluginDir(BucketTest.class), serviceID + ".zip"); FileInputStream in = new FileInputStream(inFile); bucket.readFromZip(in); in.close(); } // @Test public void invalidAddressTest() throws IOException, InterruptedException, URISyntaxException { DefaultRsfEnvironment rsfEnv = new DefaultRsfEnvironment(Hasor.createAppContext().getEnvironment()); String serviceID = "tttt"; BuildBucketBuild buildBucket = new BuildBucketBuild(serviceID, rsfEnv).invoke(); final AddressBucket bucket = buildBucket.getBucket(); // Thread watcher = new Thread() { @Override public void run() { while (true) { bucket.refreshAddress(); System.out.println(bucket.getAvailableAddresses().size()); try { Thread.sleep(250); } catch (InterruptedException e) { } } } }; watcher.setDaemon(true); watcher.start(); // Thread.sleep(2000); bucket.invalidAddress(new InterAddress("127.0.0.2", 8000, "etc2"), 500); // Thread.sleep(2000); watcher.stop(); } }