File: //usr/local/lib/python3.7/sqlite3/test/__pycache__/transactions.cpython-37.pyc
B
��g� � @ sx d dl Z d dlZd dlZdd� ZG dd� dej�ZG dd� dej�ZG dd � d ej�Zd
d� Z dd
� Z
edkrte
� dS )� Nc C s dS )NZ
sqlite_testdb� r r r �5/usr/local/lib/python3.7/sqlite3/test/transactions.py�get_db_path s r c @ s� e Zd Zdd� Zdd� Zdd� Zdd� Zd d
� Zdd� Zd
d� Z dd� Z
e�e
jdk d�dd� �Ze�e
jdk d�dd� �Zdd� ZdS )�TransactionTestsc C sf yt �t� � W n tk
r$ Y nX tjt� dd�| _| j�� | _tjt� dd�| _ | j �� | _
d S )Ng�������?)Ztimeout)�os�remover �OSError�sqlite�connect�con1�cursor�cur1�con2�cur2)�selfr r r �setUp s zTransactionTests.setUpc C sR | j �� | j�� | j�� | j�� yt�t� � W n tk
rL Y nX d S )N) r
�closer r r r �unlinkr r )r r r r �tearDown+ s
zTransactionTests.tearDownc C sN | j �d� | j �d� | j �d� | j�d� | j�� }| �t|�d� d S )Nzcreate table test(i)zinsert into test(i) values (5)zcreate table test2(j)zselect i from testr )r
�executer �fetchall�assertEqual�len)r �resr r r �CheckDMLDoesNotAutoCommitBefore7 s
z0TransactionTests.CheckDMLDoesNotAutoCommitBeforec C sB | j �d� | j �d� | j�d� | j�� }| �t|�d� d S )Nzcreate table test(i)zinsert into test(i) values (5)zselect i from testr )r
r r r r r )r r r r r �CheckInsertStartsTransaction? s
z-TransactionTests.CheckInsertStartsTransactionc C sX | j �d� | j �d� | j�� | j �d� | j�d� | j�� d }| �|d� d S )Nzcreate table test(i)zinsert into test(i) values (5)zupdate test set i=6zselect i from testr � )r
r r �commitr Zfetchoner )r r r r r �CheckUpdateStartsTransactionF s
z-TransactionTests.CheckUpdateStartsTransactionc C sX | j �d� | j �d� | j�� | j �d� | j�d� | j�� }| �t|�d� d S )Nzcreate table test(i)zinsert into test(i) values (5)zdelete from testzselect i from test� )r
r r r r r r r )r r r r r �CheckDeleteStartsTransactionO s
z-TransactionTests.CheckDeleteStartsTransactionc C sl | j �d� | j �d� | j�� | j �d� | j�d� | j�� }| �t|�d� | �|d d d� d S )Nzcreate table test(i)zinsert into test(i) values (5)zreplace into test(i) values (6)zselect i from testr r r )r
r r r r r r r )r r r r r �CheckReplaceStartsTransactionX s
z.TransactionTests.CheckReplaceStartsTransactionc C s� | j �d� | j �d� d | j_| �| jjd � | j�d� | j�� }| �t|�d� d| j_| �| jjd� | j �d� | j�d� | j�� }| �t|�d� d S )Nzcreate table test(i)zinsert into test(i) values (5)zselect i from testr ZDEFERRED)r
r r Zisolation_levelr r r r )r r r r r �CheckToggleAutoCommitb s
z&TransactionTests.CheckToggleAutoCommit)� � r$ z.test hangs on sqlite versions older than 3.2.2c C s@ | j �d� | j �d� | �tj�� | j�d� W d Q R X d S )Nzcreate table test(i)zinsert into test(i) values (5))r
r �assertRaisesr �OperationalErrorr )r r r r �CheckRaiseTimeoutr s z"TransactionTests.CheckRaiseTimeoutc C sJ | j �d� | j �d� | �tj�� | j�d� W dQ R X | j�� dS )z�
This tests the improved concurrency with pysqlite 2.3.4. You needed
to roll back con2 before you could commit con1.
zcreate table test(i)zinsert into test(i) values (5)N)r
r r% r r&