Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright 1&1 Internet AG, https://github.com/1and1/ 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 net.oneandone.jasmin.main;
 
 
 import java.util.List;
 
 public class Runner {
     public static final Random RANDOM = new Random();
     public static final Logger LOG = Logger.getLogger(Runner.class);
 
     public static Runner create(String nameWorld worldthrows IOException {
         FileNode base;
         Application application;
         FileNode localhost;
         Engine engine;
 
         base = world.guessProjectHome(Runner.class);
         application = new Application(nullnew Resolver(worldtrue), nullnull);
         localhost = world.getTemp().createTempDirectory();
         engine = application.createEngineSimple(base.getParent(), localhost);
         return new Runner(nameengine);
     }
 
     //--
 
     private final String name;
     private final Engine engine;
     private final List<Stringpaths;
 
     public Runner(String nameEngine engine) {
         this. = name;
         this. = engine;
         this. = new ArrayList<String>();
     }
 
     public int pathCount() {
         return .size();
     }
 
     public Runner add(Node logString applicationint maxthrows IOException {
         for (String line : log.readLines()) {
             line = line.trim();
             line = line.substring(line.indexOf('|') + 1);
             if (line.startsWith(application)) {
                 line = line.substring(application.length());
                 line = line.substring(0, line.indexOf(' '));
                 .add(line);
                 if (.size() == max) {
                     break;
                 }
             }
         }
         return this;
     }
 
     public Runner addAll() {
         Repository repository;
         List<Stringvariants;
 
         repository = .;
         variants = repository.getVariants();
         for (Module module : repository.modules()) {
             addTypes(module"head");
             for (String variant : variants) {
                 addTypes(modulevariant);
             }
         }
         return this;
     }
 
     public void addTypes(Module moduleString variant) {
         add(module.getName() + "/js/" + variant);
         add(module.getName() + "/js-min/" + variant);
        add(module.getName() + "/css/" + variant);
        add(module.getName() + "/css-min/" + variant);
    }
    public Runner add(String... pathList) {
        this..addAll(Arrays.asList(pathList));
        return this;
    }
    public Engine getEngine() {
        return ;
    }
    //--
    public void invoke() throws Exception {
        invoke(1, .size(), falsefalsetrue);
    }
    public void invoke(int clientCountint requestCountthrows Exception {
        invoke(clientCountrequestCounttruetruetrue);
    }
    public void invoke(int clientCountint requestCountboolean randomboolean lastModifiedboolean stats)
            throws Exception {
        long started;
        Client[] clients;
        if (stats) {
            ..println("[" +  + "]\t" + clientCount + " client(s) a " + requestCount + " requests (random="
                    + random + ", lastModified=" + lastModified + ")");
        }
        started = System.currentTimeMillis();
        clients = new Client[clientCount];
        for (int i = 0; i < clients.lengthi++) {
            clients[i] = new Client(requestCountrandomlastModified);
            clients[i].start();
        }
        for (Client client : clients) {
            client.finish();
        }
        if (stats) {
            stats(started);
        }
    }
    //--
    private void stats(long started) {
        long used;
        ..println();
        usedMemory();
        runGC();
        // CAUTION: I need a println before the next "used" call to get accurate numbers!?
        ..println("  ms:          " + (System.currentTimeMillis() - started));
        used = usedMemory();
        .free();
        runGC();
        ..println("  mem:         " + (used - usedMemory()));
        ..println();
        ..println();
    }
    private static void runGC() {
        // It helps to call Runtime.gc()
        // using several method calls:
        for (int r = 0; r < 4; ++r) {
            doRunGC();
        }
    }
    private static void doRunGC() {
        long used;
        long prev;
        used = usedMemory();
        prev = .;
        for (int i = 0; (used < prev) && (i < 500); i++) {
            Runtime.getRuntime().runFinalization();
            Runtime.getRuntime().gc();
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            prev = used;
            used = usedMemory();
        }
    }
    private static long usedMemory() {
        return Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
    }
New to GrepCode? Check out our FAQ X