久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

jmeter導(dǎo)入DB數(shù)據(jù)再再優(yōu)化

前言:分享和規(guī)定命名規(guī)范后,各位測(cè)試人員一致認(rèn)為這樣jmeter的jmx文件限制太死,主要體現(xiàn)六方面:

新邵ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

第一:規(guī)定了一個(gè)jmx文件只能錄入一個(gè)接口,這樣會(huì)導(dǎo)致jmx文件很多

第二:導(dǎo)入DB的jmx文件每輪迭代都需要更換版本號(hào),會(huì)帶來(lái)額外的工作

第三:jmx文件嚴(yán)格要求了接口執(zhí)行循序,會(huì)導(dǎo)致大家寫好的用例會(huì)重新輸出

第四:importDB的jmx文件與接口的jmx文件對(duì)應(yīng)也會(huì)很多,不能一個(gè)importDB的jmx完成所有接口的工作

第五:刪除了定義產(chǎn)品類型和頁(yè)面類型字段,增加了接口類型字段

第六:測(cè)試反饋終端類型、版本號(hào)、接口類型不需要通過(guò)importDB 的jmx文件傳入而是通過(guò)http請(qǐng)求名稱按照一定規(guī)則去獲取

因此針對(duì)上面四項(xiàng)不足,做了一些優(yōu)化。

技術(shù)方面方面改變主要體現(xiàn)在:

第一:把終端類型、版本號(hào)、接口類型、接口名稱、用例數(shù)目、用例成功數(shù)目、通過(guò)率這些字段,之前只有部分(接口類型、接口名稱)是list結(jié)構(gòu),現(xiàn)在均改為list結(jié)構(gòu)。
第二:java set操作的sql只有詳細(xì)表,而統(tǒng)計(jì)表是通過(guò)sql操作的(通過(guò)select詳細(xì)表計(jì)算出來(lái)統(tǒng)計(jì)表每個(gè)字段值insert和update的)
第三:聯(lián)合唯一索引增加了一個(gè)字段creatTime,因?yàn)闇y(cè)試反應(yīng)按照之前聯(lián)合索引只能保留本輪迭代的數(shù)據(jù),有之前的按照迭代保留數(shù)據(jù),目前是按照當(dāng)天保留數(shù)據(jù)(因此有之前精確到秒改為精確到日)

第四:SQL的各個(gè)字段獲取規(guī)則進(jìn)行了限制

jmeter線程請(qǐng)求命名規(guī)則:
由于代碼做了字段獲取的規(guī)則,循環(huán)到”終端、版本、類型、校驗(yàn)、接口”關(guān)鍵字時(shí)認(rèn)為是本jmx文件需校驗(yàn)的接口和用例

終端類型獲取規(guī)則:

由于代碼做了終端類型獲取的規(guī)則,截取”終端”和“版本”中間的字符作為終端類型

版本號(hào)獲取規(guī)則:

由于代碼做了版本號(hào)獲取的規(guī)則,截取”終端”和“版本”中間的字符作為版本號(hào)

接口類型獲取規(guī)則:
由于代碼做了接口類型獲取的規(guī)則,截取”終端”和“版本”中間的字符作為接口類型

接口名稱獲取規(guī)則:

由于代碼做了接口名稱獲取的規(guī)則,截取”校驗(yàn)”和“接口”中間的字符作為接口名稱

用例名稱獲取規(guī)則:

由于代碼做了用例名稱獲取的規(guī)則,截取”接口”后面的字符作為接口名稱

具體SQL key值的取值方法如下:

jmeter導(dǎo)入DB數(shù)據(jù)再再優(yōu)化

//獲取符合規(guī)則的終端類型
     public static ArrayList<String>  getTerminalType(String path) throws Exception{
             CsvUtil util = new CsvUtil(path);             int rowNum = util.getRowNum();
             String caseAllName = null;
             String TerminalType = null;
             ArrayList<String> terminalTypeArray = new ArrayList<String>();             for(int i=1;i<rowNum;i++){
                 caseAllName = util.getString(i, 2);                 if(caseAllName.contains("終端")&&caseAllName.contains("版本")==true
                         &&caseAllName.contains("類型")&&caseAllName.contains("校驗(yàn)")==true
                         &&caseAllName.contains("接口")==true){
                     TerminalType = caseAllName.substring(caseAllName.indexOf("終端")+2,caseAllName.indexOf("版本"));
                     terminalTypeArray.add(TerminalType);
                 }
             }                return terminalTypeArray;
         }     //獲取符合規(guī)則的版本號(hào)
     public static ArrayList<String>  getVersion(String path) throws Exception{
             CsvUtil util = new CsvUtil(path);             int rowNum = util.getRowNum();
             String caseAllName = null;
             String version = null;
             ArrayList<String> excVersionArray = new ArrayList<String>();             for(int i=1;i<rowNum;i++){
                 caseAllName = util.getString(i, 2);                 if(caseAllName.contains("終端")&&caseAllName.contains("版本")==true&&caseAllName.contains("類型")&&caseAllName.contains("校驗(yàn)")==true&&caseAllName.contains("接口")==true){
                     version = caseAllName.substring(caseAllName.indexOf("版本")+2,caseAllName.indexOf("類型"));
                     excVersionArray.add(version);
                 }
             }                return excVersionArray;
         }     //獲取符合規(guī)則的用例類型
     public static ArrayList<String>  getInterfaceType(String path) throws Exception{
             CsvUtil util = new CsvUtil(path);             int rowNum = util.getRowNum();
             String caseAllName = null;
             String interfaceNameType = null;
             ArrayList<String> interfaceTypeArray = new ArrayList<String>();             for(int i=1;i<rowNum;i++){
                 caseAllName = util.getString(i, 2);                 if(caseAllName.contains("終端")&&caseAllName.contains("版本")==true&&caseAllName.contains("類型")&&caseAllName.contains("校驗(yàn)")==true&&caseAllName.contains("接口")==true){
                     interfaceNameType = caseAllName.substring(caseAllName.indexOf("類型")+2,caseAllName.indexOf("校驗(yàn)"));
                     interfaceTypeArray.add(interfaceNameType);
                 }
             }//                System.out.println("獲取接口名稱:"+interfaceName);
                return interfaceTypeArray;
         }     //獲取符合規(guī)則的接口名稱
     public static ArrayList<String>  getInterfaceName(String path) throws Exception{
         CsvUtil util = new CsvUtil(path);         int rowNum = util.getRowNum();
         String caseAllName = null;
         String interfaceName = null;
         ArrayList<String> interfaceNameArray = new ArrayList<String>();             for(int i=1;i<rowNum;i++){
                 caseAllName = util.getString(i, 2);                 if(caseAllName.contains("終端")&&caseAllName.contains("版本")==true&&caseAllName.contains("類型")&&caseAllName.contains("校驗(yàn)")==true&&caseAllName.contains("接口")==true){
                     interfaceName = caseAllName.substring(caseAllName.indexOf("校驗(yàn)")+2,caseAllName.indexOf("接口"));
                     interfaceNameArray.add(interfaceName);//                     System.out.println("獲取接口名稱:"+interfaceName);                 }
             }//                
                return interfaceNameArray;
         }     //獲取符合規(guī)則的每條用例執(zhí)行名稱
     public static ArrayList<String> getCaseName(String path) throws Exception{
          CsvUtil util = new CsvUtil(path);         int rowNum = util.getRowNum();
         String caseAllName = null;
         String caseName = null;
         ArrayList<String> caseNameArray = new ArrayList<String>();         for(int i=1;i<rowNum;i++){
             caseAllName = util.getString(i, 2);             if(caseAllName.contains("終端")&&caseAllName.contains("版本")==true&&caseAllName.contains("類型")&&caseAllName.contains("校驗(yàn)")==true&&caseAllName.contains("接口")==true){
                 caseName = caseAllName.substring(caseAllName.indexOf("接口")+2,caseAllName.length());//                 System.out.println("用例名稱為:"+caseName);                 caseNameArray.add(caseName);//                 System.out.println(caseNameArray);             }
         }         return caseNameArray;
         
     }     //獲取符合規(guī)則的每條用例執(zhí)行結(jié)果
     public static ArrayList<String> getcaseIsPass(String path) throws Exception{
        CsvUtil util = new CsvUtil(path);        int rowNum = util.getRowNum();
         ArrayList<String> caseResultArray = new ArrayList<String>();//         System.out.println(CaseNum);
         String caseAllName = null;         for(int i=1;i<rowNum;i++){
             caseAllName = util.getString(i, 2);             if(caseAllName.contains("終端")&&caseAllName.contains("版本")==true&&caseAllName.contains("類型")&&caseAllName.contains("校驗(yàn)")==true&&caseAllName.contains("接口")==true){
                 String result = util.getString(i, 7);
                 caseResultArray.add(result);
             }
         }        return caseResultArray;
        
    }

jmeter導(dǎo)入DB數(shù)據(jù)再再優(yōu)化

支持和兼容:
第一:支持同個(gè)jmx文件多個(gè)接口用例場(chǎng)景
第二:兼容同個(gè)jmx文件雖同一個(gè)接口不同順序的輸入

一個(gè)要求:
jmeter命名規(guī)則為終端AAA版本BBB類型CCC校驗(yàn)DDD接口EEE

AAA為終端類型(如app、網(wǎng)站) ,BBB為迭代號(hào)(如9.0.1) ,CCC為接口類型(如搜索、跟團(tuán)) ,DDD為接口名稱(如默認(rèn)出發(fā)城市),EEE為用例名稱(如檢驗(yàn)推薦城市否正確)

由于獲取SQL每個(gè)字段均為L(zhǎng)ist,因此若jmeter想使用,必須進(jìn)行二次封裝!!!

jmeter導(dǎo)入DB數(shù)據(jù)再再優(yōu)化

//封裝上面獲取終端類型、版本號(hào)、接口類型、接口名稱、方法提供jmeter使用
     public static ArrayList<String> getTerminalTypeArray(String path) throws Exception{
              ArrayList<String> terminalTypeArray = readCsv.getTerminalType(path);                return terminalTypeArray;
        }     public static ArrayList<String> getVersionArray(String path) throws Exception{
              ArrayList<String> versionTypeArray = readCsv.getVersion(path);                return versionTypeArray;
        }     public static ArrayList<String> getInterfaceTypeArray(String path) throws Exception{
              ArrayList<String> interfaceTypeArray = readCsv.getInterfaceType(path);                return interfaceTypeArray;
        }      public static ArrayList<String> getInterfaceNameArray(String path) throws Exception{
          ArrayList<String> interfaceNameArray = readCsv.getInterfaceName(path);            return interfaceNameArray;
      }      public static ArrayList<String> getCaseNameArray(String path) throws Exception{
              ArrayList<String> caseNameArray = readCsv.getCaseName(path);                return caseNameArray;
          }      public static ArrayList<String> getCaseIsPassArray(String path) throws Exception{
              ArrayList<String> caseIsPassArray = readCsv.getcaseIsPass(path);                return caseIsPassArray;
          }

jmeter導(dǎo)入DB數(shù)據(jù)再再優(yōu)化

好了獲取到了,我們做插入DB操作:

詳細(xì)表跟之前改變不大!!(索引擴(kuò)充一個(gè)createTime字段、時(shí)間有精確到秒改為精確到日)

如:

jmeter導(dǎo)入DB數(shù)據(jù)再再優(yōu)化

 public static String currTime(){
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//設(shè)置日期格式
            String now = df.format(new Date());// new Date()為獲取當(dāng)前系統(tǒng)時(shí)間
            return now;
        }     //插入詳細(xì)數(shù)據(jù)
     public static boolean insertDetailDB(String terminalType,String excVersion,String interfaceType,String interfaceName,String caseName,String excResult){          try {  
                Class.forName("com.MySQL.jdbc.Driver");  
      
                String databaseName = "test";// 已經(jīng)在MySQL數(shù)據(jù)庫(kù)中創(chuàng)建好的數(shù)據(jù)庫(kù)。  
                String userName = "mobtest";// MySQL默認(rèn)的root賬戶名  
                String password = "tuniu520";// 默認(rèn)的root賬戶密碼為空  
                String connUrl = "jdbc:mysql://10.10.30.200:3306/";//連接地址
                Connection conn = DriverManager.getConnection(connUrl + databaseName, userName, password);  
                PreparedStatement st = null;
                Statement stmt = conn.createStatement();  
                String createTime = readCsv.currTime();
                String sql = "create table if NOT EXISTS AutoTest_DetailInterface(id int NOT NULL auto_increment primary key ,terminalType varchar(50) NOT  NULL DEFAULT 'App' ,"
                        + "excVersion varchar(50),interfaceType varchar(50) ,interfaceName varchar(50),"
                        + "caseName varchar(50) ,excResult varchar(50),creatTime varchar(50) NOT NULL DEFAULT '"+createTime+"',"
                                + " UNIQUE INDEX  ( terminalType,excVersion,interfaceType,interfaceName,caseName,creatTime ) )";  
//                System.out.println(sql);                // 創(chuàng)建數(shù)據(jù)庫(kù)中的表,  
                int result = stmt.executeUpdate(sql);  
                if (result != -1) {  
                    sql = "insert into AutoTest_DetailInterface(terminalType,excVersion,interfaceType,interfaceName,caseName,excResult) values(?,?,?,?,?,?) "
                            + "ON DUPLICATE KEY UPDATE excResult=?";//                    sql = "insert into AutoTest_DetailInterface (permaryTitle,secondaryTitle,excVersion,excTerminal,excResult) 
//                    +values(primaryTitle,secordaryTitle,excVersion,excTerminal,excResult)";
                    st = conn.prepareStatement(sql);                    //存入終端類型轉(zhuǎn)為小寫
                    st.setString(1, terminalType.toLowerCase());
                    st.setString(2, excVersion);
                    st.setString(3, interfaceType);
                    st.setString(4, interfaceName);
                    st.setString(5, caseName);                    //存入執(zhí)行結(jié)果true或者false轉(zhuǎn)為小寫
                    st.setString(6, excResult.toLowerCase());
                    st.setString(7, excResult.toLowerCase());
                    st.executeUpdate();
                    sql = "SELECT * FROM AutoTest_DetailInterface";  
                    System.out.println(stmt.executeQuery(sql));
                    ResultSet rs = stmt.executeQuery(sql);
                    System.out.println("id\tterminalType\texcVersion\tinterfaceType\tinterfaceName\tcaseName\texcResult\tcreatTime"); 
                    while (rs.next()) {  
                         System.out.println(rs.getString(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3) + "\t" + rs.getString(4) + "\t" + rs.getString(5) + "\t" + rs.getString(6) + "\t" + rs.getString(7)+ rs.getString(8));  
                    }  
                }  
                conn.close();  
                  
            } catch (Exception e) {  
                e.printStackTrace();  
                return false;
            }            return true;
     }

jmeter導(dǎo)入DB數(shù)據(jù)再再優(yōu)化

 

插入統(tǒng)計(jì)表:(相比之前思路都改變了~是通過(guò)詳細(xì)表select計(jì)算統(tǒng)計(jì)后insert進(jìn)去的而不是通過(guò)java依次獲取每個(gè)字段值set進(jìn)去的)

具體如下:

有一點(diǎn)說(shuō)明:就是SQL在insert的時(shí)候若是insert整個(gè)sql的時(shí)候且當(dāng)唯一聯(lián)合索引鍵相同時(shí),做更新不能用 key=vaule這種平常的用法(不然拿到第一行的數(shù)據(jù)更新了所有行的數(shù)據(jù)),而是 set key=VALUES(key)

具體用法可以看下http://www.jb51.net/article/39255.htm 這個(gè)用法,備注,因?yàn)檫@點(diǎn)糾結(jié)了我大半天時(shí)間!!!

jmeter導(dǎo)入DB數(shù)據(jù)再再優(yōu)化

//插入統(tǒng)計(jì)數(shù)據(jù)
     public static boolean insertTotalDB(){         try {  
                Class.forName("com.mysql.jdbc.Driver");  
      
                String databaseName = "test";// 已經(jīng)在MySQL數(shù)據(jù)庫(kù)中創(chuàng)建好的數(shù)據(jù)庫(kù)。  
                String userName = "mobtest";// MySQL默認(rèn)的root賬戶名  
                String password = "tuniu520";// 默認(rèn)的root賬戶密碼為空  
                String connUrl = "jdbc:mysql://10.10.30.200:3306/";//連接地址
                Connection conn = DriverManager.getConnection(connUrl + databaseName, userName, password);  
                PreparedStatement st = null;
                Statement stmt = conn.createStatement(); 
                String createTime = readCsv.currTime();
                String sql = "create table if NOT EXISTS AutoTest_TotalInterface(id int NOT NULL auto_increment primary key ,terminalType varchar(50) NOT  NULL DEFAULT 'App' ,"
                        + "excVersion varchar(50),interfaceType varchar(50) ,interfaceName varchar(50),"
                        + "caseTotalNum int,caseSucNum int,excRate varchar(50) ,creatTime varchar(50) NOT NULL DEFAULT '"+createTime+"',"
                                + " UNIQUE INDEX  ( terminalType,excVersion,interfaceType,interfaceName,creatTime ) )"; 
                // 創(chuàng)建數(shù)據(jù)庫(kù)中的表,  
                int result = stmt.executeUpdate(sql);  
                if (result != -1) {  
                    String selectSQL = "SELECT  terminalType,excVersion,interfaceType,"
                            + "interfaceName,caseTotalNum,caseSucNum,"
                            + "ROUND(caseSucNum/caseTotalNum,3) "
                            + "as excRate,creatTime from("
                            + "SELECT terminalType,excVersion,interfaceType,interfaceName,count(1) "
                            + "as caseTotalNum,sum(ex) as caseSucNum,creatTime from("
                            + "SELECT terminalType,excVersion,interfaceType,interfaceName,"
                            + "creatTime,case excResult "
                            + "when 'true' then 1 when 'false' then 0 end as ex from "
                            + "AutoTest_DetailInterface)m group by "
                            + "terminalType,excVersion,interfaceType,interfaceName,creatTime)n";
                     sql = "insert into AutoTest_TotalInterface("
                                + "terminalType,excVersion,interfaceType,interfaceName,caseTotalNum,caseSucNum,"
                                + "excRate,creatTime) "+selectSQL+" ON DUPLICATE KEY UPDATE caseTotalNum=VALUES(caseTotalNum),caseSucNum=VALUES(caseSucNum),excRate=VALUES(excRate)";
                        System.out.println(sql);                        //執(zhí)行插入操作
                        st = conn.prepareStatement(sql);
                        st.executeUpdate();
                        sql = "SELECT * FROM AutoTest_TotalInterface";  
                        System.out.println(stmt.executeQuery(sql));
                     ResultSet rs = stmt.executeQuery(sql);                     while (rs.next()) {  
                         System.out.println(rs.getString(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3) + "\t" + rs.getString(4) + "\t" + rs.getString(5) + "\t" + rs.getString(6) + "\t" + rs.getString(7)+ "\t" + rs.getString(8) + rs.getString(9) );  
                    }  
                }  
                conn.close();  
                  
            } catch (Exception e) {  
                e.printStackTrace();  
                return false;
            }            return true;
    }

jmeter導(dǎo)入DB數(shù)據(jù)再再優(yōu)化

好了,到此結(jié)束,當(dāng)然,importDB的jmx文件也要發(fā)生變化(直接調(diào)用方法即可),具體如下:

jmeter導(dǎo)入DB數(shù)據(jù)再再優(yōu)化

import readDB.*;import excFile.*;


String path = "D:\\excResult.csv";int length = readCsv.getTerminalTypeArray(path).size();
log.info("用例數(shù)量為:"+length);//循環(huán)獲取各個(gè)參數(shù)for(int i=0;i<length;i++){
    String terminalTypeKey = readCsv.getTerminalTypeArray(path).get(i);
    log.info("獲取終端類型:"+terminalTypeKey);
    String excVersionKey = readCsv.getVersionArray(path).get(i);
    log.info("獲取版本號(hào):"+excVersionKey);
    String interfaceTypeKey = readCsv.getInterfaceTypeArray(path).get(i);
    log.info("獲取接口類型:"+interfaceTypeKey);
    String interfaceNameKey = readCsv.getInterfaceNameArray(path).get(i);
    log.info("獲取接口名稱:"+interfaceNameKey);
    String caseNameKey = readCsv.getCaseNameArray(path).get(i);
    log.info("獲取用例名稱:"+caseNameKey);
    String excResultKey = readCsv.getCaseIsPassArray(path).get(i);
    log.info("獲取執(zhí)行結(jié)果:"+excResultKey);
    readCsv.insertDetailDB(terminalTypeKey, excVersionKey, interfaceTypeKey, interfaceNameKey, caseNameKey, excResultKey);
}//插入統(tǒng)計(jì)表readCsv.insertTotalDB();


String dir = "D:\\";
String oldname = "excResult.csv";
log.info("獲取最新文件名稱:"+renFile.currTime());
String newname = "excResult"+renFile.currTime()+".csv";
log.info("獲取最新文件名稱:"+newname);
renFile.renameFile(dir, oldname, newname);

jmeter導(dǎo)入DB數(shù)據(jù)再再優(yōu)化

導(dǎo)入DB數(shù)據(jù)如下:

原始數(shù)據(jù):

導(dǎo)入詳細(xì)表的數(shù)據(jù):

導(dǎo)入統(tǒng)計(jì)表數(shù)據(jù):

新聞名稱:jmeter導(dǎo)入DB數(shù)據(jù)再再優(yōu)化
網(wǎng)站地址:http://www.js-pz168.com/article16/gddjgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)網(wǎng)站維護(hù)手機(jī)網(wǎng)站建設(shè)營(yíng)銷型網(wǎng)站建設(shè)做網(wǎng)站搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
亚洲精选视频免费看| 九一九一国产精品| 国内精品视频666| 91在线一区二区三区| 精品视频一区在线| 欧美在线一二三| 久久这里只有精品首页| 亚洲专区一二三| 国产凹凸在线观看一区二区| 久久精品国产一区二区三区日韩| 欧美亚洲另类激情小说| 国产日韩高清在线| 日本伊人精品一区二区三区观看方式| 成人白浆超碰人人人人| 色女人综合av| 精品久久国产字幕高潮| 亚洲综合男人的天堂| 粉嫩嫩av羞羞动漫久久久| 欧美一区1区三区3区公司| 欧美精品在线视频| 亚洲图片激情小说| 国产一区二区三区精品欧美日韩一区二区三区 | 俄罗斯精品一区二区| 亚洲一区二区在| 久久久久久**毛片大全| 日本在线不卡视频| 国产日韩欧美一区二区| 欧美精品视频www在线观看| 亚洲男人都懂的| 成人的网站免费观看| 亚洲一二三区精品| 国产日韩欧美高清在线| 久久66热re国产| 免费成人深夜夜行视频| 99精品久久免费看蜜臀剧情介绍 | 亚洲欧洲另类国产综合| 韩国理伦片一区二区三区在线播放| 国产a一区二区| 精品视频全国免费看| 亚洲欧美日韩一区二区三区在线观看| 国产福利精品导航| 亚洲一区二区在| 国产精品美女久久久久aⅴ| 国产精品一级片| 亚洲国产欧洲综合997久久| 国产欧美日韩激情| 国产一区二区三区观看| 日本黑人久久| 国产日产欧美一区二区三区| 国内精品免费在线观看| 亚洲国产一区二区精品视频| 国产无人区一区二区三区| 精品一区二区免费视频| 日韩中文字幕av在线| 欧美国产精品中文字幕| 国产精品夜夜爽| 最近看过的日韩成人| 亚洲欧美日韩在线不卡| 91亚洲精华国产精华精华液| 欧美日韩国产a| 日韩精品一级中文字幕精品视频免费观看 | 亚洲成人资源在线| 国产一区二区三区免费不卡| 日韩免费观看高清完整版在线观看| 日韩福利电影在线观看| 欧美在线激情| 国产精品女主播av| 99视频超级精品| 欧美理论在线播放| 青青草91视频| 亚洲欧美丝袜| 亚洲免费av网站| 国产九区一区在线| 久久久精品免费网站| 国产福利一区二区| 欧美日韩视频一区二区| 日韩在线一二三区| 日韩欧美视频第二区| 自拍偷拍欧美精品| 国产精品免费一区二区三区在线观看| 精品99999| 国产成人精品三级| 在线成人小视频| 久久av中文字幕片| 在线免费视频一区二区| 午夜久久电影网| 日韩av在线电影观看| 中文字幕一区日韩精品欧美| 91蝌蚪porny成人天涯| 欧美成人女星排名| 丰满白嫩尤物一区二区| 欧美一级视频精品观看| 国产毛片精品一区| 欧美日韩一区小说| 美女国产一区二区| 色综合久久久久网| 日本中文在线一区| 色一情一伦一子一伦一区| 丝瓜av网站精品一区二区| 亚洲午夜精品久久| 午夜欧美在线一二页| 亚洲自拍的二区三区| 亚洲成av人片在线观看无码| 国产成人欧美日韩在线电影| 欧美日韩国产小视频| 国产一区在线看| 欧美精品在线一区二区三区| 国产一区二区视频在线播放| 欧美精品一二三| 国产精品一区二区久久不卡 | 日韩欧美中文字幕制服| 成人一区在线看| 欧美www视频| 94-欧美-setu| 日本一区二区三区高清不卡| 国产精品视频福利| 亚洲天天做日日做天天谢日日欢| 久久久精彩视频| 亚洲最大的成人av| 一区二区精品在线观看| 蜜桃精品视频在线| 欧美精品视频www在线观看| 丁香啪啪综合成人亚洲小说| 2020日本不卡一区二区视频| 91黄在线观看| 中文字幕一区在线| 神马影院午夜我不卡影院| 午夜电影一区二区三区| 在线观看亚洲精品视频| 国产一区二区三区电影在线观看| 日韩欧美成人激情| 9a蜜桃久久久久久免费| 亚洲天堂a在线| 五月天综合网| 蓝色福利精品导航| 欧美一区二区精品在线| 91久久偷偷做嫩草影院| 亚洲人成在线观看一区二区| 亚洲国产欧洲综合997久久| 伦理电影国产精品| 日韩精品一区在线| 国产精品免费一区二区三区在线观看 | 中文字幕一区二区三| 视频在线99| 韩日av一区二区| 26uuu久久综合| 久久精品国产精品国产精品污| 亚洲综合一二区| 欧美午夜宅男影院| 99视频在线精品| 亚洲欧美另类图片小说| 色哟哟一区二区在线观看| 国产丶欧美丶日本不卡视频| 国产日韩欧美高清在线| 日本在线免费观看一区| 久久国产生活片100| 亚洲精品一区二区三区香蕉| 鲁丝一区二区三区免费| 蜜桃视频在线一区| 精品久久久久av影院| 欧美高清视频一区二区三区在线观看| 男女男精品视频网| 精品久久久久久久久久久久久久久久久| 国产一区精品在线| 青娱乐精品在线视频| 精品福利视频一区二区三区| 欧美一区二区福利| 国产乱子轮精品视频| 国产精品日日摸夜夜摸av| 一区二区三区四区欧美| 成人美女视频在线观看| 国产精品久久久久久久久动漫| 色狠狠av一区二区三区| 99精品黄色片免费大全| 亚洲国产日韩a在线播放性色| 欧美一区二区三区人| 久久资源av| 国产精品一二三四| 亚洲欧美电影一区二区| 在线不卡免费欧美| 精品日韩电影| 国产一区视频在线看| 亚洲婷婷在线视频| 欧美喷潮久久久xxxxx| 国产一区二区三区黄| 黄色日韩网站视频| 国产精品久久久久久久久快鸭| 欧美性猛交xxxxxx富婆| 国产乱码精品一区二区三区卡| 美女精品一区二区| 国产精品久久久久影院老司| 欧美日韩综合一区| 久久久影院一区二区三区| 国产精品一二三| 亚洲一区二区三区在线播放| 欧美v亚洲v综合ⅴ国产v| 亚洲欧洲日夜超级视频| 91久久极品少妇xxxxⅹ软件| 免费成人结看片| 国产精品大尺度|