private boolean doVerify( ProdIterator l_iterator, ProdIterator s_iterator, FuncVP fvp, Map<String, String> infop) { if (scheme == 2) { for (int i = 0; i < 1200; i++) { if (l_iterator.hasNext() & s_iterator.hasNext()) { String l_product_id = XMLParser.product_id(l_iterator.next()); String s_product_id = XMLParser.product_id(s_iterator.next()); if (!l_product_id.equals(s_product_id)) { logger.error( " - [LOG_FAILED] - verify function 【" + fvp.getFvpname() + "】 for l_product_id: " + l_product_id + "s_product_id:" + s_product_id); return false; } } else if (!l_iterator.hasNext() & !s_iterator.hasNext()) { break; } else { logger.error( " - [LOG_FAILED] - verify function 【" + fvp.getFvpname() + "】 : totalCount is not fit"); break; } } // 方案3 } else if (scheme == 3) { } return true; }
// @Test(enabled = true, groups = "p2") public void Run(boolean flag) { try { List<String> pids = new ArrayList<String>(); for (String url : RequestURLs) { logger.info("Start:" + url); pids.clear(); // 取到结果集中的pid,写入list ProdIterator initialIterator1 = new ProdIterator(1200, url, true); while (initialIterator1.hasNext()) { Node node = initialIterator1.next(url, true); String pid = XMLParser.product_id(node); pids.add(pid); } // 这个地方文件的命名只是用来做参考 // 需要对比的有:部署后开缓存机制&不开缓存机制;部署后第一次写入缓存&后续命中缓存;部署前&部署后; // 以上每组,2个结果集都应该一样 String filepath1 = "E:\\manual_automation\\txtFiles\\" + RequestURLs.indexOf(url) + "_newwithcache.txt"; String filepath2 = "E:\\manual_automation\\txtFiles\\" + RequestURLs.indexOf(url) + "_newnocache.txt"; // flag代表第几次执行程序, true表示第一次,false表示第二次,这两次分别代表新、旧版本 // 把list中的pid写入文件 if (flag) { FileUtil.writeToTxt(pids.toString(), filepath1); } else FileUtil.writeToTxt(pids.toString(), filepath2); // 只有两次都跑完了,才会有前缀、后缀以_1/_2区分的文件名,然后比较一下其中的内容 File file1 = new File(filepath1); File file2 = new File(filepath2); if (file1.exists() && file2.exists()) FileUtil.compareFiles(filepath1, filepath2); // compareFile(filepath1,filepath2); logger.info("Done:" + url); } } catch (Exception e) { e.printStackTrace(); } }
@Override public boolean Verifier(ProdIterator iterator, Map<String, String> map) { // 相比当前的商品,上一个商品 Product pre_Product = null; Product pre_Product_reco = null; try { // 暂时不验总商品数量 // int totalCount = iterator.getTotalCount(); // int preTotalCount = Integer.valueOf(map.get("totalCount")); // if(!NumVerifier(totalCount, preTotalCount)){ // return false; // } // 遍历所有商品节点,比较相邻的2个商品的价格是否按照降序排列 while (iterator.hasNext()) { logger.debug("/****************************product**************************/"); // 给product节点赋值 Node subNode = iterator.next(); Product product = new Product(); product.setProduct_id(XMLParser.product_id(subNode)); product.setDd_sale_price(XMLParser.product_dd_sale_price(subNode)); product.setStype(XMLParser.product_stype(subNode)); if (product.getStype().equals("")) { if (pre_Product == null) { pre_Product = product; } else { // 比较前一个商品的价格是不是比后一个商品价格高 if (Double.valueOf(pre_Product.getDd_sale_price()) >= Double.valueOf(product.getDd_sale_price())) { pre_Product = product; } else { // logger.error("Failed! Previous one is cheaper than current one;"); logger.error( " - [PRICEDESC] - " + "pre_product_id:" + pre_Product.getProduct_id() + ";" + "sale_price:" + pre_Product.getDd_sale_price()); logger.error( " - [PRICEDESC] - " + "product_id:" + product.getProduct_id() + ";" + "sale_price:" + product.getDd_sale_price()); return false; } } } else if (product.getStype().equals("reco")) { // 推荐品排序 if (pre_Product_reco == null) { pre_Product_reco = product; } else { // 比较前一个商品的价格是不是比后一个商品价格高 if (Double.valueOf(pre_Product_reco.getDd_sale_price()) >= Double.valueOf(product.getDd_sale_price())) { pre_Product_reco = product; } else { // logger.error("Failed! Previous one is cheaper than current one;"); logger.error( " - [PRICEDESC] - " + "pre_product_id:" + pre_Product_reco.getProduct_id() + ";" + "sale_price:" + pre_Product_reco.getDd_sale_price()); logger.error( " - [PRICEDESC] - " + "product_id:" + product.getProduct_id() + ";" + "sale_price:" + product.getDd_sale_price()); return false; } } } logger.debug("/****************************end**************************/"); } } catch (Exception e) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); e.printStackTrace(new PrintStream(baos)); String exception = baos.toString(); logger.error(" - [LOG_EXCEPTION] - " + exception); } return true; }