@Test public void shouldExportFile() throws Exception { final File file = File.createTempFile("export", ".csv"); file.delete(); Thread thread = new Thread() { @Override public void run() { log.info("process download dialog"); app.getAutoItHelper() .winWaitAndActivate("Windows Internet Explorer", "", 5000) .click("Button3") .winWaitAndActivate("—охранить как", "", 5000) .send("Edit1", file.getAbsolutePath()) .click("Button1"); } }; thread.start(); log.info("click export"); app.getNavigationHelper().clickExport(); Thread.sleep(2000); thread.join(); // дождатьс¤ сохранени¤ файла // проверить содержимое файла }
/** * Time a multi-threaded access to a cache. * * @return the timing stopwatch */ private <V> StopWatch timeMultiThreaded( String id, final Map<Integer, V> map, ValueFactory<V> factory) throws InterruptedException { StopWatch stopWatch = new StopWatch(id); for (int i = 0; i < 500; i++) { map.put(i, factory.newValue(i)); } Thread[] threads = new Thread[30]; stopWatch.start("Running threads"); for (int threadIndex = 0; threadIndex < threads.length; threadIndex++) { threads[threadIndex] = new Thread("Cache access thread " + threadIndex) { @Override public void run() { for (int j = 0; j < 1000; j++) { for (int i = 0; i < 1000; i++) { map.get(i); } } } }; } for (Thread thread : threads) { thread.start(); } for (Thread thread : threads) { if (thread.isAlive()) { thread.join(2000); } } stopWatch.stop(); return stopWatch; }
@Test public void updateMappingConcurrently() throws Throwable { createIndex("test1", "test2"); // This is important. The test assumes all nodes are aware of all indices. Due to initializing // shard throttling // not all shards are allocated with the initial create index. Wait for it.. ensureYellow(); final Throwable[] threadException = new Throwable[1]; final AtomicBoolean stop = new AtomicBoolean(false); Thread[] threads = new Thread[3]; final CyclicBarrier barrier = new CyclicBarrier(threads.length); final ArrayList<Client> clientArray = new ArrayList<>(); for (Client c : clients()) { clientArray.add(c); } for (int j = 0; j < threads.length; j++) { threads[j] = new Thread( new Runnable() { @SuppressWarnings("unchecked") @Override public void run() { try { barrier.await(); for (int i = 0; i < 100; i++) { if (stop.get()) { return; } Client client1 = clientArray.get(i % clientArray.size()); Client client2 = clientArray.get((i + 1) % clientArray.size()); String indexName = i % 2 == 0 ? "test2" : "test1"; String typeName = "type" + (i % 10); String fieldName = Thread.currentThread().getName() + "_" + i; PutMappingResponse response = client1 .admin() .indices() .preparePutMapping(indexName) .setType(typeName) .setSource( JsonXContent.contentBuilder() .startObject() .startObject(typeName) .startObject("properties") .startObject(fieldName) .field("type", "string") .endObject() .endObject() .endObject() .endObject()) .get(); assertThat(response.isAcknowledged(), equalTo(true)); GetMappingsResponse getMappingResponse = client2.admin().indices().prepareGetMappings(indexName).get(); ImmutableOpenMap<String, MappingMetaData> mappings = getMappingResponse.getMappings().get(indexName); assertThat(mappings.containsKey(typeName), equalTo(true)); assertThat( ((Map<String, Object>) mappings.get(typeName).getSourceAsMap().get("properties")) .keySet(), Matchers.hasItem(fieldName)); } } catch (Throwable t) { threadException[0] = t; stop.set(true); } } }); threads[j].setName("t_" + j); threads[j].start(); } for (Thread t : threads) t.join(); if (threadException[0] != null) { throw threadException[0]; } }