⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmtest.java

📁 JXTA&#8482 is a set of open, generalized peer-to-peer (P2P) protocols that allow any networked devi
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        /* to make things more interesting, we remove the first digit from the         * id if it is longer than 2 digits.         */        String queryString = Integer.toString(i);        if (queryString.length() > 2) {            queryString = queryString.substring(1, queryString.length());        }        long t0 = System.currentTimeMillis();        List<InputStream> searchResults = null;        try {            searchResults = cm.search(dirname[0], "Name", "*" + queryString, 10, null);            assertNotNull("Null search result", searchResults);            Enumeration result = Collections.enumeration(searchResults);            assertNotNull("Null search enumerator", result);            assertTrue("Enumerator empty", result.hasMoreElements());            while (result.hasMoreElements()) {                ByteArrayInputStream dataStream = (ByteArrayInputStream) result.nextElement();                StructuredDocument doc = StructuredDocumentFactory.newStructuredDocument(MimeMediaType.XMLUTF8, dataStream);                Enumeration en = doc.getChildren("Name");                while (en.hasMoreElements()) {                    String val = (String) ((Element) en.nextElement()).getValue();                    System.out.println("EndsWith: Queried for *" + queryString + ", found: " + val);                    assertTrue("result returned " + val + " does not end with " + queryString, val.endsWith(queryString));                }            }        } catch (Exception e) {            e.printStackTrace();            fail("findPeerEndsWith failed: " + e.getMessage());        }        assert searchResults != null;        System.out.println("EndsWith: retrieved " + searchResults.size() + " entries in: " + (System.currentTimeMillis() - t0) + " ms");    }    private void findPeerAdvStartswith(int i) {        /* to make things more interesting, we remove the last digit from the         * queryString if it is longer than 2 digits.         */        String queryString = Integer.toString(i);        if (queryString.length() > 2) {            queryString = queryString.substring(0, queryString.length() - 1);        }        long t0 = System.currentTimeMillis();        List<InputStream> searchResults = null;        try {            searchResults = cm.search(dirname[0], "Name", "CmTestPeer" + queryString + "*", 10, null);            assertNotNull("Null search result", searchResults);            Enumeration result = Collections.enumeration(searchResults);            assertNotNull("Null search enumerator", result);            assertTrue("Enumerator empty", result.hasMoreElements());            while (result.hasMoreElements()) {                ByteArrayInputStream dataStream = (ByteArrayInputStream) result.nextElement();                StructuredDocument doc = StructuredDocumentFactory.newStructuredDocument(MimeMediaType.XMLUTF8, dataStream);                Enumeration en = doc.getChildren("Name");                while (en.hasMoreElements()) {                    String val = (String) ((Element) en.nextElement()).getValue();                    System.out.println("StartsWith: Queried for CmTestPeer" + queryString + "*, found: " + val);                    assertTrue("result returned " + val + " does not start with CmTestPeer" + queryString                            ,                            val.startsWith("CmTestPeer" + queryString));                }            }        } catch (Exception e) {            e.printStackTrace();            fail("findPeerAdvStartsWith failed: " + e.getMessage());        }        assert searchResults != null;        System.out.println("StartsWith: retrieved " + searchResults.size() + " entries in: " + (System.currentTimeMillis() - t0) + " ms");    }    private void findPeerAdvContains(int i) {        /* to make things more interesting, we remove the first digit from the         * queryString if it is longer than 2 digits.         */        String queryString = Integer.toString(i);        if (queryString.length() > 2) {            queryString = queryString.substring(1, queryString.length());        }        long t0 = System.currentTimeMillis();        List<InputStream> searchResults = null;        try {            searchResults = cm.search(dirname[0], "Name", "*" + queryString + "*", 10, null);            assertNotNull("Null search result", searchResults);            Enumeration result = Collections.enumeration(searchResults);            assertNotNull("Null search enumerator", result);            assertTrue("Enumerator empty", result.hasMoreElements());            while (result.hasMoreElements()) {                ByteArrayInputStream dataStream = (ByteArrayInputStream) result.nextElement();                StructuredDocument doc = StructuredDocumentFactory.newStructuredDocument(MimeMediaType.XMLUTF8, dataStream);                Enumeration en = doc.getChildren("Name");                while (en.hasMoreElements()) {                    String val = (String) ((Element) en.nextElement()).getValue();                    System.out.println("Contains: Queried for *" + queryString + "*, found: " + val);                    assertTrue("result returned " + val + " does not contain " + queryString, val.indexOf(queryString) != -1);                }            }        } catch (Exception e) {            e.printStackTrace();            fail("findPeerAdvContains failed: " + e.getMessage());        }        assert searchResults != null;        System.out.println("Contains: retrieved " + searchResults.size() + " entries in: " + (System.currentTimeMillis() - t0) + " ms");    }    private void deletePeer() {        ArrayList<String> advNameList = new ArrayList<String>(ITERATIONS);        long t0 = System.currentTimeMillis();        for (int i = 0; i < ITERATIONS; i++) {            PeerAdvertisement adv = generatePeerAdv(i);            String advName = adv.getID().getUniqueValue().toString();            try {                cm.save(dirname[0], advName, adv);            } catch (Exception e) {                e.printStackTrace();                fail("Failed to create Peer Adv: " + e.getMessage());            }            advNameList.add(advName);        }        // randomize the list to make deletion a little more unpredictable        Collections.shuffle(advNameList);        for (int i = 0; i < ITERATIONS; i++) {            try {                cm.remove(dirname[0], advNameList.get(i));            } catch (Exception e) {                e.printStackTrace();                fail("Failed to delete Peer Adv: " + e.getMessage());            }        }        List<InputStream> searchResults = null;        try {            searchResults = cm.search(dirname[0], "Name", "*", ITERATIONS, null);        } catch (Exception e) {            e.printStackTrace();            fail("Failed to search Peer Adv: " + e.getMessage());        }        // always start unit test with an empty cm (rm -r .jxta)        assertTrue("remove failed for " + searchResults.size(), searchResults.size() == 0);        System.out.println(                "Completed Creation+Deletion of " + ITERATIONS + " PeerAdvertisements in: "                        + (System.currentTimeMillis() - t0) / 1000 + " seconds");    }    private PeerAdvertisement generatePeerAdv(int number) {        try {            PeerAdvertisement peerAdv = (PeerAdvertisement)                    AdvertisementFactory.newAdvertisement(PeerAdvertisement.getAdvertisementType());            peerAdv.setPeerGroupID(pgID);            peerAdv.setPeerID(IDFactory.newPeerID(pgID));            peerAdv.setName("CmTestPeer" + number);            return peerAdv;        } catch (Exception e) {            e.printStackTrace();            fail("generatePeerAdv failed: " + e.getMessage());        }        return null;    }    private PipeAdvertisement generatePipeAdv(int number) {        try {            PipeAdvertisement adv = (PipeAdvertisement)                    AdvertisementFactory.newAdvertisement(PipeAdvertisement.getAdvertisementType());            adv.setPipeID(IDFactory.newPipeID(pgID));            adv.setName("CmTestPipe" + number);            adv.setType(PipeService.UnicastType);            return adv;        } catch (Exception e) {            e.printStackTrace();            fail("generatePipeAdv failed: " + e.getMessage());        }        return null;    }    private void multithreadPeer() {        System.out.println("mt starting...");        final int THREADS = 2;        Thread adders[] = new Thread[THREADS];        Thread removers[] = new Thread[THREADS];        Thread searchers[] = new Thread[THREADS];        for (int i = 0; i < THREADS; i++) {            adders[i] = new Thread(new PeerAdder(i));            removers[i] = new Thread(new PeerRemover(i));            searchers[i] = new Thread(new PeerSearcher(i));        }        for (int i = 0; i < THREADS; i++) {            adders[i].start();            removers[i].start();            searchers[i].start();        }        // wait for all adders and removers to get done        for (int i = 0; i < THREADS; i++) {            try {                adders[i].join();                removers[i].join();            } catch (InterruptedException ignore) {            }        }        if (failed) {            fail("mt test failed");        }        System.out.println("mt all done");    }    private class PeerRemover implements Runnable {        private int id = 0;        public PeerRemover(int id) {            this.id = id;        }        public void run() {            for (int i = 0; i < ITERATIONS && !failed; i++) {                while (queue.size() < 1) {                    try {                        Thread.sleep(1000);                    } catch (InterruptedException ignore) {                    }                }                PeerAdvertisement adv = queue.remove(0);                String advName = adv.getID().getUniqueValue().toString();                try {                    long expiry = cm.getExpirationtime(dirname[0], advName);                    assertTrue("found expired advertisement " + advName, expiry > 0);                    cm.remove(dirname[0], advName);                } catch (Exception e) {                    fail("Failed to remove Peer Adv: " + e.getMessage());                }                System.out.println("mt (-) " + id + " " + i + " " + advName);            }            System.out.println("mt (-) " + id + " all done");        }    }    private class PeerAdder implements Runnable {        private int id = 0;        public PeerAdder(int id) {            this.id = id;        }        public void run() {            for (int i = 0; i < ITERATIONS && !failed; i++) {                PeerAdvertisement adv = generatePeerAdv(i);                String advName = adv.getID().getUniqueValue().toString();                try {                    cm.save(dirname[0], advName, adv);                } catch (Exception e) {                    fail("Failed to create Peer Adv: " + e.getMessage());                }                queue.add(adv);                System.out.println("mt (+) " + id + " " + i + " " + advName);            }            System.out.println("mt (+) " + id + " all done");        }    }    private class PeerSearcher implements Runnable {        private int id = 0;        public PeerSearcher(int id) {            this.id = id;        }        public void run() {            int count = 0;            final int offset = "urn:jxta:".length();            for (int i = 0; i < (ITERATIONS / 10) && !failed; i++) {                try {                    synchronized (cm) {                        List<InputStream> searchResults = cm.search(dirname[0], "Name", "CmTestPeer" + "*", 10, null);                        Enumeration result = Collections.enumeration(searchResults);                        while (result.hasMoreElements() && !failed) {                            ByteArrayInputStream dataStream = (ByteArrayInputStream) result.nextElement();                            StructuredDocument doc = StructuredDocumentFactory.newStructuredDocument(MimeMediaType.XMLUTF8, dataStream);                            Enumeration en = doc.getChildren("PID");                            while (en.hasMoreElements() && !failed) {                                String val = (String) ((Element) en.nextElement()).getValue();                                String fn = val.substring(offset);                                System.out.println("mt (Q) " + id + " " + (count++) + " " + fn);                                try {                                    byte[] bits = cm.restoreBytes(dirname[0], fn);                                    if (bits == null) {                                        fail("mt (Q) " + id + " db/index consistency failure: " + "\nfailed to restore " + fn);                                    }                                } catch (IOException ex) {                                    ex.printStackTrace();                                    fail("mt (Q) " + id + " restore failed: " + ex.getMessage());                                }                            }                        }                    }                } catch (Exception e) {                    e.printStackTrace();                    fail("mt ?" + id + " failed: " + e.getMessage());                }            }            System.out.println("mt (Q) " + id + " all done");        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -