日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Byteman和JUnit进行故障注入

發布時間:2023/12/3 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Byteman和JUnit进行故障注入 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們的應用程序獨立存在的時間已經很久了。 如今,應用程序是一種非常復雜的野獸,它們使用無數的API和協議相互通信,將數據存儲在傳統或NoSQL數據庫中,通過網絡發送消息和事件……例如,如果考慮到數據庫,您會多久考慮會發生什么?當您的應用程序正在主動查詢時發生故障? 還是某個API端點突然開始拒絕連接? 將此類事故作為測試套件的一部分覆蓋不是很好嗎? 這就是故障注入和Byteman框架所要解決的問題。 例如,我們將構建一個現實的,功能完善的Spring應用程序,該應用程序使用Hibernate / JPA訪問MySQL數據庫并管理客戶。 作為應用程序的JUnit集成測試套件的一部分,我們將包括三種測試用例:

  • 儲存/尋找顧客
  • 存儲客戶并嘗試在數據庫宕機時查詢數據庫(故障模擬)
  • 存儲客戶和數據庫查詢超時(故障模擬)

在本地開發箱上運行應用程序只有兩個先決條件:

  • MySQL服務器已安裝并具有客戶數據庫
  • Oracle JDK已安裝,并且JAVA_HOME環境變量指向它

話雖這么說,我們已經準備好出發了。 首先,讓我們描述我們的域模型,該域模型由具有ID和單個屬性名稱的單個Customer類組成。 看起來很簡單:

package com.example.spring.domain;import java.io.Serializable;import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table;@Entity @Table( name = "customers" ) public class Customer implements Serializable{private static final long serialVersionUID = 1L;@Id@GeneratedValue@Column(name = "id", unique = true, nullable = false)private long id;@Column(name = "name", nullable = false)private String name;public Customer() {}public Customer( final String name ) {this.name = name;}public long getId() {return this.id;}protected void setId( final long id ) {this.id = id;}public String getName() {return this.name;}public void setName( final String name ) {this.name = name;} }

為簡單起見,服務層與數據訪問層混合在一起并直接調用數據庫。 這是我們的CustomerService實現:

package com.example.spring.services;import javax.persistence.EntityManager; import javax.persistence.PersistenceContext;import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional;import com.example.spring.domain.Customer;@Service public class CustomerService {@PersistenceContext private EntityManager entityManager;@Transactional( readOnly = true )public Customer find( long id ) {return this.entityManager.find( Customer.class, id );}@Transactional( readOnly = false )public Customer create( final String name ) {final Customer customer = new Customer( name );this.entityManager.persist(customer);return customer;}@Transactional( readOnly = false )public void deleteAll() {this.entityManager.createQuery( "delete from Customer" ).executeUpdate();} }

最后, Spring應用程序上下文定義了數據源和事務管理器。 這里需要注意的一點是:由于我們不會引入數據訪問層( @Repository )類,為了使Spring正確執行異常轉換,我們將PersistenceExceptionTranslationPostProcessor實例定義為后處理服務類( @Service )。 其他一切都應該非常熟悉。

package com.example.spring.config;import java.util.Properties;import javax.sql.DataSource;import org.hibernate.dialect.MySQL5InnoDBDialect; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.orm.jpa.vendor.Database; import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; import org.springframework.stereotype.Service; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement;import com.example.spring.services.CustomerService;@EnableTransactionManagement @Configuration @ComponentScan( basePackageClasses = CustomerService.class ) public class AppConfig {@Beanpublic PersistenceExceptionTranslationPostProcessor exceptionTranslationPostProcessor() {final PersistenceExceptionTranslationPostProcessor processor = new PersistenceExceptionTranslationPostProcessor();processor.setRepositoryAnnotationType( Service.class );return processor;}@Beanpublic HibernateJpaVendorAdapter hibernateJpaVendorAdapter() {final HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter();adapter.setDatabase( Database.MYSQL );adapter.setShowSql( false );return adapter;}@Beanpublic LocalContainerEntityManagerFactoryBean entityManager() throws Throwable {final LocalContainerEntityManagerFactoryBean entityManager = new LocalContainerEntityManagerFactoryBean();entityManager.setPersistenceUnitName( "customers" );entityManager.setDataSource( dataSource() );entityManager.setJpaVendorAdapter( hibernateJpaVendorAdapter() );final Properties properties = new Properties();properties.setProperty("hibernate.dialect", MySQL5InnoDBDialect.class.getName());properties.setProperty("hibernate.hbm2ddl.auto", "create-drop" );entityManager.setJpaProperties( properties );return entityManager;}@Beanpublic DataSource dataSource() {final DriverManagerDataSource dataSource = new DriverManagerDataSource();dataSource.setDriverClassName( com.mysql.jdbc.Driver.class.getName() );dataSource.setUrl( "jdbc:mysql://localhost/customers?enableQueryTimeouts=true" );dataSource.setUsername( "root" );dataSource.setPassword( "" );return dataSource;}@Beanpublic PlatformTransactionManager transactionManager() throws Throwable {return new JpaTransactionManager( this.entityManager().getObject() );} }

現在,讓我們添加一個簡單的JUnit測試用例,以驗證我們的Spring應用程序確實按預期工作。 在此之前,應創建數據庫客戶 :

> mysql -u root mysql> create database customers; Query OK, 1 row affected (0.00 sec)

這是一個CustomerServiceTestCase ,目前,它具有用于創建客戶并驗證其是否已創建的單個測試。

package com.example.spring;import static org.hamcrest.CoreMatchers.notNullValue; import static org.junit.Assert.assertThat;import javax.inject.Inject;import org.junit.After; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader;import com.example.spring.config.AppConfig; import com.example.spring.domain.Customer; import com.example.spring.services.CustomerService;@RunWith( SpringJUnit4ClassRunner.class ) @ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = { AppConfig.class } ) public class CustomerServiceTestCase {@Inject private CustomerService customerService; @Afterpublic void tearDown() {customerService.deleteAll();}@Testpublic void testCreateCustomerAndVerifyItHasBeenCreated() throws Exception {Customer customer = customerService.create( "Customer A" );assertThat( customerService.find( customer.getId() ), notNullValue() );} }

看起來很簡單明了。 現在,讓我們考慮成功創建客戶但由于查詢超時而導致查找失敗的情況。 為此,我們需要Byteman的幫助。 簡而言之, Byteman是字節碼操作框架。 這是一個Java代理實現,可與JVM一起運行(或附加到JVM)并修改正在運行的應用程序字節碼,從而改變其行為。 Byteman有一個很好的文檔,并且擁有豐富的規則定義集,可以執行大多數開發人員可以想到的一切。 而且,它與JUnit框架具有很好的集成。 在該主題上,應該使用@RunWith(BMUnitRunner.class)運行Byteman測試,但是我們已經使用@RunWith(SpringJUnit4ClassRunner.class),并且JUnit不允許指定多個測試運行程序。 除非您熟悉JUnit @Rule機制,否則這似乎是一個問題。 事實證明,將BMUnitRunner轉換為JUnit規則非常簡單:

package com.example.spring;import org.jboss.byteman.contrib.bmunit.BMUnitRunner; import org.junit.rules.MethodRule; import org.junit.runners.model.FrameworkMethod; import org.junit.runners.model.InitializationError; import org.junit.runners.model.Statement;public class BytemanRule extends BMUnitRunner implements MethodRule {public static BytemanRule create( Class< ? > klass ) {try {return new BytemanRule( klass ); } catch( InitializationError ex ) { throw new RuntimeException( ex ); }}private BytemanRule( Class klass ) throws InitializationError {super( klass );}@Overridepublic Statement apply( final Statement statement, final FrameworkMethod method, final Object target ) {Statement result = addMethodMultiRuleLoader( statement, method ); if( result == statement ) {result = addMethodSingleRuleLoader( statement, method );}return result;} }

JUnit @Rule注入就這么簡單:

@Rule public BytemanRule byteman = BytemanRule.create( CustomerServiceTestCase.class );

容易吧? 我們前面提到的場景可以改寫一下:當執行從“客戶”表中選擇的JDBC語句執行時,我們應該因超時異常而失敗。 這是帶有附加Byteman批注的JUnit測試用例的外觀:

@Test( expected = DataAccessException.class )@BMRule(name = "introduce timeout while accessing MySQL database",targetClass = "com.mysql.jdbc.PreparedStatement",targetMethod = "executeQuery",targetLocation = "AT ENTRY",condition = "$0.originalSql.startsWith( \"select\" ) && !flagged( \"timeout\" )",action = "flag( \"timeout\" ); throw new com.mysql.jdbc.exceptions.MySQLTimeoutException( \"Statement timed out (simulated)\" )")public void testCreateCustomerWhileDatabaseIsTimingOut() {Customer customer = customerService.create( "Customer A" );customerService.find( customer.getId() );}

我們可以這樣寫:“當有人調用PreparedStatement類的executeQuery方法并且查詢以'SELECT'開始時,將拋出MySQLTimeoutException ,并且它應該只發生一次(由超時標志控制)”。 運行此測試用例將在控制臺中打印stacktrace,并期望引發DataAccessException :

com.mysql.jdbc.exceptions.MySQLTimeoutException: Statement timed out (simulated)at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.7.0_21]at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) ~[na:1.7.0_21]at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.7.0_21]at java.lang.reflect.Constructor.newInstance(Constructor.java:525) ~[na:1.7.0_21]at org.jboss.byteman.rule.expression.ThrowExpression.interpret(ThrowExpression.java:231) ~[na:na]at org.jboss.byteman.rule.Action.interpret(Action.java:144) ~[na:na]at org.jboss.byteman.rule.helper.InterpretedHelper.fire(InterpretedHelper.java:169) ~[na:na]at org.jboss.byteman.rule.helper.InterpretedHelper.execute0(InterpretedHelper.java:137) ~[na:na]at org.jboss.byteman.rule.helper.InterpretedHelper.execute(InterpretedHelper.java:100) ~[na:na]at org.jboss.byteman.rule.Rule.execute(Rule.java:682) ~[na:na]at org.jboss.byteman.rule.Rule.execute(Rule.java:651) ~[na:na]at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java) ~[mysql-connector-java-5.1.24.jar:na]at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56) ~[hibernate-core-4.2.0.Final.jar:4.2.0.Final]at org.hibernate.loader.Loader.getResultSet(Loader.java:2031) [hibernate-core-4.2.0.Final.jar:4.2.0.Final]

看起來不錯,還有另一種情況:創建客戶成功但由于數據庫關閉而導致查找失敗? 這一點比較復雜,但無論如何都很容易做,讓我們看一下:

@Test( expected = CannotCreateTransactionException.class ) @BMRules(rules = {@BMRule(name="create countDown for AbstractPlainSocketImpl",targetClass = "java.net.AbstractPlainSocketImpl",targetMethod = "getOutputStream",condition = "$0.port==3306",action = "createCountDown( \"connection\", 1 )"),@BMRule(name = "throw IOException when trying to execute 2nd query to MySQL",targetClass = "java.net.AbstractPlainSocketImpl",targetMethod = "getOutputStream",condition = "$0.port==3306 && countDown( \"connection\" )",action = "throw new java.io.IOException( \"Connection refused (simulated)\" )")} ) public void testCreateCustomerAndTryToFindItWhenDatabaseIsDown() {Customer customer = customerService.create( "Customer A" );customerService.find( customer.getId() ); }

讓我解釋一下這是怎么回事。 我們希望坐在套接字級別,并且實際上控制通訊盡可能地接近網絡,而不是在JDBC驅動程序級別。 這就是為什么我們要檢測AbstractPlainSocketImpl的原因。 我們也知道MySQL的默認端口是3306,因此我們僅檢測在此端口上打開的套接字。 另一個事實,我們知道第一個創建的套接字與客戶創建相對應,我們應該讓它通過。 但是第二個對應于查找并且必須失敗。 名為“ connection”的createCountDown達到了此目的:第一次調用通過(閂鎖尚未計數為零),但是第二個調用觸發MySQLTimeoutException異常。 運行此測試用例將在控制臺中打印stacktrace,并期望拋出CannotCreateTransactionException :

Caused by: java.io.IOException: Connection refused (simulated)at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.7.0_21]at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) ~[na:1.7.0_21]at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.7.0_21]at java.lang.reflect.Constructor.newInstance(Constructor.java:525) ~[na:1.7.0_21]at org.jboss.byteman.rule.expression.ThrowExpression.interpret(ThrowExpression.java:231) ~[na:na]at org.jboss.byteman.rule.Action.interpret(Action.java:144) ~[na:na]at org.jboss.byteman.rule.helper.InterpretedHelper.fire(InterpretedHelper.java:169) ~[na:na]at org.jboss.byteman.rule.helper.InterpretedHelper.execute0(InterpretedHelper.java:137) ~[na:na]at org.jboss.byteman.rule.helper.InterpretedHelper.execute(InterpretedHelper.java:100) ~[na:na]at org.jboss.byteman.rule.Rule.execute(Rule.java:682) ~[na:na]at org.jboss.byteman.rule.Rule.execute(Rule.java:651) ~[na:na]at java.net.AbstractPlainSocketImpl.getOutputStream(AbstractPlainSocketImpl.java) ~[na:1.7.0_21]at java.net.PlainSocketImpl.getOutputStream(PlainSocketImpl.java:214) ~[na:1.7.0_21]at java.net.Socket$3.run(Socket.java:915) ~[na:1.7.0_21]at java.net.Socket$3.run(Socket.java:913) ~[na:1.7.0_21]at java.security.AccessController.doPrivileged(Native Method) ~[na:1.7.0_21]at java.net.Socket.getOutputStream(Socket.java:912) ~[na:1.7.0_21]at com.mysql.jdbc.MysqlIO.(MysqlIO.java:330) ~[mysql-connector-java-5.1.24.jar:na]

大! 字節曼為不同故障仿真提供的可能性是巨大的。 仔細添加測試套件,以驗證應用程序如何對錯誤的條件做出反應,從而大大提高了應用程序的健壯性和對故障的適應能力。 多虧了Byteman伙計們! 請在GitHub上找到完整的項目。

參考: 使用Byteman和JUnit進行故障注入:通過Andriy Redko {devmind}博客上的JCG合作伙伴 Andrey Redko,可以做更多的工作來確保應用程序的健壯性 。

翻譯自: https://www.javacodegeeks.com/2013/04/fault-injection-with-byteman-and-junit.html

總結

以上是生活随笔為你收集整理的使用Byteman和JUnit进行故障注入的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产精品美女999 | 中文字幕你懂的 | 97成人精品区在线播放 | 亚洲精品综合一区二区 | 亚洲闷骚少妇在线观看网站 | a在线视频v视频 | 日韩极品视频在线观看 | 蜜臀久久99精品久久久久久网站 | 91在线91拍拍在线91 | 人人藻人人澡人人爽 | 99成人免费视频 | 中文乱码视频在线观看 | 国内精品视频在线 | 一区二区三区在线观看 | 国产三级视频 | 一级免费黄色 | 成人a大片| 久久久国产精华液 | 色夜影院 | 麻豆视频在线看 | av免费在线观看1 | 免费看片日韩 | 免费黄色特级片 | 久久一级片 | 97精品国产97久久久久久久久久久久 | 欧美久久久久久久久久久久 | 91丨九色丨丝袜 | 麻豆91在线观看 | 在线小视频你懂的 | 久精品视频在线 | 成人在线视频在线观看 | 中文字幕免费高清在线 | 97成人在线免费视频 | 国产视频在线免费 | 久久字幕精品一区 | 日韩欧美电影在线观看 | 国产人成在线视频 | 永久免费毛片在线观看 | 精品国内自产拍在线观看视频 | 日本女人的性生活视频 | 国产视频久久久 | 五月天天色 | 免费裸体视频网 | 91九色在线观看视频 | 国产精品 999 | 国产看片 色 | 国产69精品久久99的直播节目 | 免费色视频网站 | 亚洲色图 校园春色 | www.黄色在线 | 日本久久久久久久久久 | 色综久久 | 日韩三级精品 | 国产精品一区二区三区免费看 | 午夜视频久久久 | 国产亚洲午夜高清国产拍精品 | 久久久精华网 | 国产专区免费 | 2021av在线| 人人爽人人爽人人 | 九九欧美视频 | 日韩 在线观看 | 99视频久久 | 日韩欧在线 | 亚洲 欧美变态 另类 综合 | 在线黄色av电影 | www九九热| 婷婷婷国产在线视频 | 狠狠色狠狠色综合日日小说 | 色的网站在线观看 | 91精品久久久久久久91蜜桃 | 不卡av电影在线观看 | 日韩偷拍精品 | 91精品视频一区 | 西西444www高清大胆 | 日韩高清在线一区二区三区 | 国产拍揄自揄精品视频麻豆 | 欧美一级特黄高清视频 | 超碰人人做 | 91在线看网站 | 97超碰免费在线 | 66av99精品福利视频在线 | 国产片免费在线观看视频 | 久久综合色影院 | 娇妻呻吟一区二区三区 | 国产精美视频 | 91观看视频 | 精品999久久久 | 韩国一区在线 | 日日躁你夜夜躁你av蜜 | 欧美日韩国产综合一区二区 | 成人av网页| 色吊丝在线永久观看最新版本 | 久久夜色精品国产欧美乱 | 97视频在线免费播放 | 片网站 | 日本精品中文字幕在线观看 | 在线观看国产www | 日韩视频中文字幕在线观看 | 96精品高清视频在线观看软件特色 | av电影 一区二区 | 91在线一区| 亚州激情视频 | 午夜免费在线观看 | 国产精品欧美 | 中文字幕亚洲欧美日韩2019 | 在线观看中文字幕dvd播放 | 18久久久久 | 亚洲欧美精品一区二区 | 美女av电影 | 久久私人影院 | 国产黄色片免费在线观看 | 国产精品99精品 | 亚洲涩涩网 | 九色在线视频 | 久久成人人人人精品欧 | 经典三级一区 | 成人试看120秒 | 国产精品自产拍在线观看蜜 | 日韩专区在线播放 | 亚洲涩涩色 | 日韩欧美国产精品 | 2019av在线视频 | 亚洲精品乱码久久 | 日本久久久久久科技有限公司 | av免费观看网站 | 久久av影院 | 成人免费在线播放视频 | 久久久精品国产免费观看同学 | 国产亚洲精品xxoo | 在线免费色视频 | 亚洲国产人午在线一二区 | 国产美女精品 | 久久国产欧美日韩 | 一区二区视频免费在线观看 | 国产成人av网站 | 国产精品99久久久久久大便 | 午夜三级理论 | 在线99热 | 人人人爽 | 98久9在线 | 免费 | 99免在线观看免费视频高清 | 人人舔人人舔 | 欧美激情视频在线观看免费 | 久久大香线蕉app | 亚洲精品激情 | 久久综合干 | 欧美日韩视频 | 黄色一级大片在线免费看国产一 | 免费在线观看成人小视频 | 天堂av在线网址 | 欧美片网站yy | 天天操夜夜干 | 麻豆国产在线播放 | 公与妇乱理三级xxx 在线观看视频在线观看 | 日本一区二区不卡高清 | 天天色成人网 | 国产视频黄 | 国产小视频免费在线观看 | 亚洲人xxx| 麻豆一二 | www.五月激情.com | 99视频免费播放 | 久久天天躁夜夜躁狠狠85麻豆 | 日韩一级电影网站 | 天天操人人干 | 亚洲精品午夜一区人人爽 | 久久久精品国产免费观看一区二区 | 欧美精品xxx | 久久久99精品免费观看 | 91人人澡 | 国产欧美在线一区二区三区 | 在线午夜 | 久久免费99 | 天堂av在线中文在线 | 日韩av线观看 | 蜜臀av在线一区二区三区 | 久久综合影视 | 不卡av在线播放 | 一本一本久久a久久精品牛牛影视 | 国产小视频精品 | 91麻豆国产 | 69性欧美| 久久99热久久99精品 | 成人四虎| 久久久久久久久久久久久久av | 日韩手机在线观看 | 日韩资源在线观看 | 四虎影视精品永久在线观看 | 精品视频免费 | 精品99999| 91桃色国产在线播放 | 国产黄色免费 | 97超视频 | 丁香五月缴情综合网 | 97超碰在线免费观看 | 亚洲国产日韩在线 | av高清一区二区三区 | 国产中文字幕一区二区三区 | 久久人人爽人人爽人人 | av黄免费看 | 日韩网站免费观看 | 午夜在线国产 | 成人手机在线视频 | 97超碰免费在线观看 | 看av在线| www.天天射.com | av网站手机在线观看 | 国产视频日韩视频欧美视频 | 亚洲最新视频在线播放 | 久久r精品 | 日韩欧美中文 | 日韩激情在线 | www.黄色片.com| 午夜黄色影院 | 国产成人精品综合 | 免费看色视频 | 啪嗒啪嗒免费观看完整版 | 永久免费精品视频 | 最新av免费在线 | 久久久国产一区 | 在线国产91 | 成人免费视频网址 | 天天色婷婷 | 国产精品一区二区在线免费观看 | 99精品免费久久久久久久久 | 欧美日韩不卡一区 | 日本中文字幕视频 | 青青草国产在线 | 亚洲 在线 | 国产97色在线 | 久9在线 | 九九久久久久久久久激情 | 欧亚日韩精品一区二区在线 | 97小视频 | 欧美精品久久久久久久 | 91看片淫黄大片一级在线观看 | 色天天天| 中国一级片免费看 | 日韩国产在线观看 | 国产午夜在线 | 精品国产免费人成在线观看 | 欧美日韩久久久 | 麻豆一区二区 | 亚洲高清精品在线 | 黄色成人影院 | 日本黄色大片儿 | 成人av视屏 | 人人澡人人舔 | 91麻豆精品国产91久久久无限制版 | 国产传媒中文字幕 | 久久久久免费看 | 国产黄色精品视频 | 色香蕉视频 | 日韩中文字幕免费在线播放 | 美女视频是黄的免费观看 | 日韩美女黄色片 | 精品91久久久久 | 黄色av网站在线观看免费 | 国产精品成人久久久久 | 99久久精品无码一区二区毛片 | 亚洲 综合 激情 | 在线观看国产一区 | 伊人狠狠 | 国产日韩欧美在线播放 | 久久在草 | 欧美男同视频网站 | 夜夜夜夜爽 | 99这里都是精品 | 国产一区在线视频 | 999精品在线 | 亚洲国产成人精品在线观看 | 成人免费网视频 | 狠狠的干| 亚洲网站在线 | 国产露脸91国语对白 | 国产午夜精品一区二区三区 | 亚洲精选视频在线 | 91麻豆精品91久久久久同性 | 懂色av一区二区三区蜜臀 | 亚洲精品久久激情国产片 | 亚洲欧美一区二区三区孕妇写真 | 日日夜夜免费精品 | 国产明星视频三级a三级点| 亚洲国产午夜 | 国产精品久久久 | 特级西西444www高清大视频 | 四虎www.| 国产精品一区二区免费 | 国产美女在线精品免费观看 | 日韩高清一二区 | 99999精品| 狠狠综合久久 | 人人看黄色 | 久色伊人| 久久午夜影院 | 成年人免费看av | 国产精品一区二区三区在线免费观看 | 免费观看久久久 | 亚洲九九爱 | 国产精品麻豆视频 | 五月天中文字幕 | 成人在线免费小视频 | 成人久久网 | 六月丁香在线观看 | 国内精自线一二区永久 | 日韩视频一区二区三区在线播放免费观看 | 中文字幕人成乱码在线观看 | 日韩在线视频一区二区三区 | 欧美日韩18 | 免费视频97 | 久久只精品99品免费久23小说 | 国产精品手机视频 | 亚洲精品在线免费 | 亚洲成a人片在线观看网站口工 | 69av在线视频| 久久爱综合 | 中文资源在线播放 | 五月激情久久久 | 亚洲精品免费播放 | 黄视频色网站 | 91精品伦理 | 国产网红在线观看 | 国产成人精品一区二区三区 | 伊人天堂久久 | 色婷婷激情电影 | 精品国产福利在线 | 日本美女xx | 亚洲精品免费在线视频 | 九九爱免费视频在线观看 | 成人欧美日韩国产 | 国产成人精品免费在线观看 | 亚洲乱码国产乱码精品天美传媒 | 亚洲小视频在线观看 | 久久国产精品99久久久久 | 国产一级二级在线观看 | 成人欧美在线 | 欧美精品中文 | 免费成人在线观看视频 | 天天骚夜夜操 | 狠狠操91| 黄色国产在线观看 | 欧美a级片免费看 | 天天干天天干天天干 | 日韩不卡高清 | 久久久久观看 | 亚洲综合在线视频 | 特级片免费看 | www亚洲精品 | 日韩久久午夜一级啪啪 | 成年人免费观看国产 | 日日操天天射 | 久久久免费精品国产一区二区 | av一区二区在线观看中文字幕 | 中文字幕视频播放 | 九九免费精品视频在线观看 | 黄色成人在线观看 | 色视频网站在线 | 欧美成天堂网地址 | 99精品区 | 日韩免费观看视频 | 国产一二区在线观看 | 国产在线久草 | 免费在线观看中文字幕 | 天天射天天 | 国产呻吟在线 | 狠狠干中文字幕 | 中文字幕亚洲在线观看 | 99精品黄色片免费大全 | 91视频在线看| 五月天久久综合 | 黄色av大片 | 午夜99| 免费黄色小网站 | 综合久久一本 | 最近日本mv字幕免费观看 | 日韩91在线| 免费国产在线精品 | 免费在线观看91 | 欧美另类性 | 人人爱人人射 | 在线观看www91 | 97视频免费看 | 精品一区二区三区香蕉蜜桃 | 日韩av一区二区在线影视 | 精品xxx| 国产亚洲精品久久久久久久久久久久 | 中文字幕 第二区 | 久久伊人精品一区二区三区 | 国产免费区 | 少妇18xxxx性xxxx片 | 精品中文字幕视频 | 人人澡人人添人人爽一区二区 | 欧美乱淫视频 | 麻花豆传媒mv在线观看 | 亚洲国产精品成人综合 | 亚洲综合激情网 | 97超碰人人澡人人爱 | 波多野结衣亚洲一区二区 | 久久久久免费精品视频 | 中文字幕乱码电影 | 欧美成人影音 | 成人a视频片观看免费 | 亚洲精品国产综合99久久夜夜嗨 | 国产精品va在线观看入 | 亚洲综合色激情五月 | 欧美性性网 | 国产黄色一级片在线 | 国产在线国产 | 国产999视频在线观看 | 亚洲国产丝袜在线观看 | 激情综合五月婷婷 | 日韩av一区在线观看 | 日韩乱码中文字幕 | 91桃色免费视频 | 久久精品视频国产 | 亚洲一级二级三级 | 成人午夜片av在线看 | 亚洲精品资源在线观看 | 免费www视频 | 久久免费激情视频 | 欧美少妇的秘密 | 深夜激情影院 | 在线观看蜜桃视频 | 久久久久久毛片精品免费不卡 | 91亚洲精品国偷拍 | 日韩精品免费在线视频 | 91在线91 | 亚洲黄色在线观看 | 欧美精品首页 | 激情开心网站 | 国产亚洲精品成人av久久影院 | 久久久精品小视频 | 88av色 | 操操操影院| 国产成人精品一区二三区 | 久久久免费少妇 | 日韩中文字幕免费在线观看 | 99精品视频在线播放免费 | 狠狠躁18三区二区一区ai明星 | 一二区av | 精品视频免费看 | 欧美a在线免费观看 | 国产精品va最新国产精品视频 | 成人精品在线 | 中文字幕高清av | 亚洲午夜精品久久久久久久久久久久 | 欧美精品在线免费 | 国产一区在线精品 | 亚洲视频久久久 | 国产精品毛片一区二区三区 | 免费网址你懂的 | 亚洲 在线 | www黄色大片 | 91九色视频在线播放 | 69夜色精品国产69乱 | 久久开心激情 | 婷婷电影在线观看 | 最近在线中文字幕 | 中文字幕日韩精品有码视频 | 在线看片一区 | 精品久久久久国产免费第一页 | 婷婷激情综合网 | 国产成人一区二区三区在线观看 | 日韩特黄一级欧美毛片特黄 | 国产精品原创在线 | 国产成人一二片 | 黄色网址国产 | 天天综合婷婷 | 日韩在线观看网站 | 国产粉嫩在线观看 | 国产精品二区三区 | 成人黄色小说在线观看 | 色全色在线资源网 | 毛片基地黄久久久久久天堂 | 天天干天天操av | 91在线小视频 | 香蕉视频在线看 | 日韩电影中文字幕在线 | 欧美日本不卡高清 | 亚洲日本韩国一区二区 | 精品久久国产一区 | 免费人成网| 久久久久北条麻妃免费看 | 99热最新网址| 欧美久久久久久久久中文字幕 | 欧美成年网站 | 最近2019中文免费高清视频观看www99 | 毛片99| av性网站 | 91av国产视频 | 黄色片网站免费 | 成人免费视频在线观看 | 九月婷婷综合网 | 欧美成人91 | 欧美激情视频在线免费观看 | 成人天堂网 | 91超碰在线播放 | 91久色蝌蚪 | 99久久精品国产亚洲 | 97超碰人人澡人人 | 国产一级免费视频 | 色噜噜狠狠色综合中国 | 免费日韩视频 | 午夜av激情| 色偷偷97| 亚洲精品理论 | 成人三级网站在线观看 | 亚洲另类交 | 韩国av三级 | 欧美日韩性 | 国产福利午夜 | 在线免费观看黄色大片 | 一区在线观看 | 干天天| 免费久久99精品国产 | 婷婷色狠狠 | 久久久国产精品久久久 | 国产精品免费成人 | 亚洲欧洲精品一区二区精品久久久 | 亚洲一区日韩 | 六月婷色| 日日躁夜夜躁xxxxaaaa | av免费在线网 | 中文字字幕在线 | 国产精品免费一区二区 | 国产精品综合在线观看 | 日韩av片无码一区二区不卡电影 | 国产少妇在线观看 | 亚洲综合精品视频 | 精品国产成人在线 | 成人试看120秒 | 日韩电影中文字幕在线 | 天堂在线免费视频 | 久久久精品国产免费观看一区二区 | 毛片网站在线看 | 久久99国产精品久久99 | 成人av在线直播 | 日韩av免费一区二区 | 五月天电影免费在线观看一区 | 日韩精品一区二区三区丰满 | 日韩精品一区二区三区第95 | 91亚洲国产成人久久精品网站 | 国产福利a | 久久99精品国产99久久6尤 | 亚洲丁香久久久 | 日韩三级精品 | 色国产精品一区在线观看 | 视频在线日韩 | 欧美日韩不卡在线视频 | 久久综合狠狠综合久久狠狠色综合 | 色综合久久66 | 精品伦理一区二区三区 | 91麻豆精品| 精品国产自 | 国产又粗又长的视频 | 麻豆精品视频在线 | 国产精品一区二区免费看 | 欧美日产一区 | 不卡的av在线 | 日韩免费视频网站 | 日韩av成人在线观看 | 欧美一级电影免费观看 | 成人av在线直播 | 91在线公开视频 | 91亚洲网| 国产99在线播放 | 麻豆国产精品视频 | 国产乱对白刺激视频在线观看女王 | 999电影免费在线观看 | 亚洲精品视频观看 | 日韩精品在线免费观看 | 五月婷婷丁香色 | 丁香九月婷婷 | 婷婷成人亚洲综合国产xv88 | 蜜臀av夜夜澡人人爽人人 | 国产日韩视频在线 | v片在线播放 | 色婷婷av在线 | 人人爽人人爽人人片av免 | 精品日韩在线 | 日日夜夜精品视频天天综合网 | 亚洲精品看片 | 青青草国产成人99久久 | 亚洲色图27p | 人人澡人摸人人添学生av | 天天狠狠 | 视频在线观看一区 | 久草线 | 免费看久久 | 久久天堂影院 | 狠狠精品| 免费高清av在线看 | 国产精品自产拍在线观看网站 | 一区二区三区精品在线 | 日韩精品国产一区 | 免费色视频网站 | wwxxxx日本| 国产精品美女999 | 久久综合中文字幕 | 日韩有色 | 日韩a欧美| 国产又粗又猛又黄又爽视频 | 午夜av电影院 | 日韩精品在线视频 | 99c视频高清免费观看 | 精品国产一区在线观看 | 久久狠狠一本精品综合网 | 亚洲成人xxx | 亚洲影视九九影院在线观看 | 久久精品3 | 久久国产精品电影 | 久久精品欧美一区 | 欧美永久视频 | 国产日产av | 国产精品人人做人人爽人人添 | 亚洲免费av电影 | 中文字幕在线专区 | 最近中文字幕视频完整版 | www.人人干| 97热在线观看| 国产成人黄色片 | 香蕉久草在线 | 中文有码在线视频 | 麻豆精品传媒视频 | 亚洲高清免费在线 | 最新免费av在线 | 88av色 | 久久精品中文字幕 | 欧美淫视频| 色五丁香 | 亚洲精品乱码久久久久v最新版 | 狠狠色婷婷丁香六月 | 色综合久久久久久久久五月 | 色综合久久久久综合体桃花网 | 国产黄色网 | 中文字幕精品一区二区精品 | 看毛片网站| 成年人网站免费在线观看 | 精品久久久久久久久久岛国gif | 亚洲精品看片 | 国产欧美精品一区二区三区四区 | 蜜桃av观看 | 久久久久国产精品一区二区 | 色综合天天综合网国产成人网 | 国产一区电影在线观看 | 狠狠狠狠狠狠天天爱 | 国产视频18| 中文字幕在线一区二区三区 | 日产av在线播放 | 中文字幕在线日 | 久久久国产精品网站 | 婷婷丁香色 | 国产免费不卡 | 91一区啪爱嗯打偷拍欧美 | 亚洲精品日韩在线观看 | 国产精品色婷婷视频 | 午夜影院在线观看18 | 黄色一级影院 | 天天操天天操天天操天天操天天操天天操 | 五月天色综合 | 精品亚洲二区 | 欧美综合在线视频 | 日韩一区在线免费观看 | 999成人| 色综合天天视频在线观看 | 国产日韩精品一区二区在线观看播放 | 久久伊人热 | 五月婷久久 | 国产中文字幕视频在线观看 | aaawww| 九九久久久久99精品 | av在线a | 国产一区二区在线观看视频 | 国产一级精品绿帽视频 | 国产精品九九久久99视频 | 精品国产免费一区二区三区五区 | 国内精品久久久久影院优 | 欧美极度另类性三渗透 | 国产亚洲在线 | 青青草国产精品 | 亚洲毛片一区二区三区 | 精品久久久久久综合日本 | 999精品网 | 婷婷在线免费视频 | 一区久久久 | 婷婷视频导航 | 9在线观看免费高清完整版 玖玖爱免费视频 | 国产麻豆精品免费视频 | 综合天天| 色窝资源| 亚洲欧洲美洲av | 免费看片日韩 | 成人午夜电影在线观看 | 欧美久久久久久久久中文字幕 | 午夜视频导航 | 久久久久久久精 | 欧美亚洲一区二区在线 | 国产1区在线 | 超级碰碰碰视频 | 亚洲无吗视频在线 | 欧美日韩不卡在线观看 | 国产精品一区二区久久久久 | 国模吧一区 | 大胆欧美gogo免费视频一二区 | 国产 色 | 亚洲综合色视频在线观看 | 日韩免费一级a毛片在线播放一级 | 亚洲国产精品一区二区久久,亚洲午夜 | 成人黄色电影视频 | 91在线在线观看 | 色综合久久88 | 激情综合色综合久久综合 | 99热精品久久 | 久久歪歪 | 色狠狠操 | 国产亚洲情侣一区二区无 | www黄色软件 | 国产免费av一区二区三区 | 这里只有精彩视频 | 日日夜夜精品免费观看 | 精品久久中文 | av福利免费 | 久久国产亚洲精品 | 成人av亚洲 | 欧美日韩一区二区免费在线观看 | 婷婷 中文字幕 | 黄色av大片 | 高潮久久久久久 | 成年人视频免费在线播放 | 天天av在线播放 | 99999精品| av福利免费 | 五月婷婷丁香六月 | 天天操天天舔天天爽 | 欧美小视频在线 | 久久久精品福利视频 | 蜜臀av性久久久久av蜜臀三区 | 一级片免费在线 | 麻豆91小视频 | 亚洲国产色一区 | 91精品电影 | 激情综合久久 | 人人超碰免费 | 亚洲尺码电影av久久 | 日韩久久激情 | 97在线免费 | 在线观看黄av | 一本一本久久a久久精品综合小说 | 精品福利在线视频 | 在线观看爱爱视频 | 特级大胆西西4444www | 狠狠狠狠狠狠狠干 | 亚洲精品福利视频 | 在线观看成年人 | 美女网站视频一区 | 国产一区二区久久久久 | 99久久精品国产毛片 | 国产视频2区 | 亚洲女欲精品久久久久久久18 | 九色激情网 | 欧美日韩在线视频免费 | 欧美日韩国产一区二区三区在线观看 | 欧美性视频网站 | 亚洲网久久 | 天天拍天天色 | 中文字幕黄色网址 | 视频在线观看入口黄最新永久免费国产 | 久久久久日本精品一区二区三区 | 在线看中文字幕 | 狠狠的操狠狠的干 | 日韩美女高潮 | 亚洲麻豆精品 | 精品久久一区二区 | 亚洲视屏| 91污在线观看 | 麻豆va一区二区三区久久浪 | 天天添夜夜操 | 国产美腿白丝袜足在线av | 亚洲影音先锋 | 亚洲视频aaa | av在线进入 | 久草在线视频精品 | 亚洲五月六月 | 国产99久久久欧美黑人 | 亚洲一区二区精品 | 国产在线观看地址 | 色久天| 欧美一级裸体视频 | 麻豆视频91| 欧美日韩免费视频 | 国产精品短视频 | 成人av免费在线 | 亚洲乱码国产乱码精品天美传媒 | 日韩综合一区二区 | 久久人人爽人人爽人人片av软件 | 亚洲国产999 | 婷婷精品 | 国产精品区在线观看 | 久久不卡电影 | 在线视频中文字幕一区 | 国产在线观看99 | 激情五月亚洲 | www日韩在线观看 | 综合久色| 不卡av电影在线观看 | 亚洲精品在线电影 | 五月天久久综合 | 久久午夜羞羞影院 | 久久久久久久久爱 | 成人毛片a | 午夜美女av | 99免费| 中文字幕一区二区三区乱码在线 | 亚洲伊人成综合网 | 国产精品一区二区视频 | 国产男女爽爽爽免费视频 | 91久久偷偷做嫩草影院 | 狠狠的干狠狠的操 | 国产在线观看污片 | 欧美国产日韩在线观看 | 欧美日韩视频网站 | 91av手机在线 | 蜜臀aⅴ国产精品久久久国产 | 国产精品v欧美精品 | av免费电影在线观看 | 中文有码在线 | 在线电影日韩 | 正在播放国产精品 | 激情av五月婷婷 | 成人a在线| 又黄又爽的视频在线观看网站 | 亚洲va欧美va国产va黑人 | 欧美日韩一区二区视频在线观看 | 手机av资源 | 国产欧美在线一区 | 91亚洲在线| 91精品国产综合久久久久久久 | 日韩激情在线 | 亚洲精选视频免费看 | 久久99久久99精品中文字幕 | 久久99在线| 亚洲欧洲一级 | 欧美日韩中文在线视频 | 国产专区精品视频 | 欧美精品v国产精品 | av电影一区 | 色偷偷网站视频 | 日韩在线免费电影 | 亚洲精品av中文字幕在线在线 | 日韩三级不卡 | 亚洲最新av网址 | 日日草天天草 | 日韩精品视频免费在线观看 | 欧美日韩国产一区二区在线观看 | 一本色道久久综合亚洲二区三区 | 97精品国产97久久久久久久久久久久 | 久久亚洲专区 | 国产在线97 | 免费观看十分钟 | 黄色片免费电影 | 国产手机在线 | 综合网婷婷 | 久久久久女教师免费一区 | 亚洲免费观看在线视频 | 免费一级日韩欧美性大片 | 激情欧美丁香 | 西西人体4444www高清视频 | 精品中文字幕视频 | 亚洲精品国精品久久99热 | 蜜桃视频在线观看一区 | 香蕉视频在线免费 | 久久99国产综合精品免费 | 91成人精品一区在线播放 | 最近中文字幕大全 | 久久精品亚洲精品国产欧美 | 久久久99精品免费观看乱色 | 一区二区电影在线观看 | 在线观看免费视频你懂的 | av黄网站| 亚洲精品美女久久久 | 最新国产精品久久精品 | a级国产乱理论片在线观看 伊人宗合网 | 一区二区三区四区五区在线 | 狠狠色丁香婷婷综合视频 | 在线观看中文字幕av | 97色综合| 激情一区二区三区欧美 | 成人毛片在线观看 | 黄色成人av | 中文 一区二区 | 中文国产字幕 | 国产在线自 | 国产麻豆视频 | 99久久影院| 九九视频网| 黄色影院在线播放 | 中文字幕中文字幕在线中文字幕三区 | 国产亚洲精品久久19p | 99精品视频在线观看免费 | 免费看黄在线看 | 天天操夜夜操 | 久久首页 | 精壮的侍卫呻吟h | 日本一区二区免费在线观看 | 国产亚洲精品久久久久久移动网络 | 在线观看中文字幕 | 亚洲视频在线免费观看 | 五月天久久久久久 | 一区 在线 影院 | 日韩一区二区三区免费电影 | 五月天欧美精品 | 在线观看黄网站 | 99爱爱 | 免费中文字幕视频 | 国产精品99精品久久免费 | 欧美大荫蒂xxx | 天天爽天天爽 | 国产日韩亚洲 | 99久久日韩精品视频免费在线观看 | 色网免费观看 | 亚洲精品av在线 | 日本高清中文字幕有码在线 | 国产精品久久久久久久久久三级 | av在观看 | 成人久久久久久久久 | 在线观看亚洲a | 国产三级精品三级在线观看 | 国产精品免费观看网站 | 亚洲国产精品va在线看 | 久操中文字幕在线观看 | 99在线免费视频观看 | 久久看看| 精品五月天 | 久久精品视频18 | 中文字幕黄网 | 91av在线电影| 97精品国产 | 国产精品视频全国免费观看 | 色综合天天综合网国产成人网 | 成人网大片 | 国产v亚洲v | 国产97免费 | 国产又粗又猛又黄又爽 | 欧美日韩三级 | 亚洲国产电影在线观看 | 91影视成人| 亚洲免费不卡 | 狠狠干天天操 | 国产视频亚洲精品 | 精品福利在线观看 | 国产成人精品一区二区三区在线观看 | 欧美做受高潮1 | 嫩草伊人久久精品少妇av | 干干日日 | 国产成人精品久久二区二区 | 毛片无卡免费无播放器 | 日日躁你夜夜躁你av蜜 | 亚洲免费在线看 | av免费观看在线 | 99999精品视频| 国产亚洲午夜高清国产拍精品 | 亚洲三区在线 | 欧美日本不卡视频 | 色婷婷99 | 日韩在线 | 国产精品一区二区三区四区在线观看 | 在线视频 国产 日韩 | 国产精品麻豆果冻传媒在线播放 | 亚洲日b视频 | 国产中文字幕大全 | 精品无人国产偷自产在线 | 日本高清久久久 | 91精品久 | 欧美日韩另类在线观看 | 综合色站| 国产精品视频全国免费观看 | 国产精品久久久久久久久久久久久 | 亚洲国产精品推荐 | 蜜臀一区二区三区精品免费视频 | av网址最新| 国产黄色片在线免费观看 | 天天做天天射 | 成人黄色电影在线观看 | 九九免费精品视频在线观看 | 欧美日韩激情视频8区 | 国产黄色理论片 | 日本99热 | 丁香久久激情 | 97偷拍在线视频 | 中文字幕在线看视频国产中文版 | 中文字幕久久精品 | 国产成人精品一区一区一区 | 久久精品国产v日韩v亚洲 | 国产黄a三级三级 | 九九视频免费观看视频精品 | 久久九九免费视频 | 久久成人久久 |