Parallel Tests

Take a look at the parallel testing of the application.

We'll cover the following...

As with the last chapter, the parallel version of our system can be adapted by just declaring a new property and reusing the same model, to see if any glaring concurrency issues can be found.

Let’s take a look at the property and then see it in action in the code widgets below.

Code

The prop_parallel property in the following code has been highlighted for us.

-module(book_shim).
-compile(export_all).

add_book_existing(ISBN, Title, Author, Owned, Avail) -> 
    bookstore_db:add_book(ISBN, Title, Author, Owned, Avail).
add_book_new(ISBN, Title, Author, Owned, Avail) -> 
    bookstore_db:add_book(ISBN, Title, Author, Owned, Avail).

add_copy_existing(ISBN) -> bookstore_db:add_copy(ISBN). 
add_copy_new(ISBN) -> bookstore_db:add_copy(ISBN).

borrow_copy_avail(ISBN) -> bookstore_db:borrow_copy(ISBN). 
borrow_copy_unavail(ISBN) -> bookstore_db:borrow_copy(ISBN). borrow_copy_unknown(ISBN) -> bookstore_db:borrow_copy(ISBN).

return_copy_full(ISBN) -> bookstore_db:return_copy(ISBN). 
return_copy_existing(ISBN) -> bookstore_db:return_copy(ISBN). 
return_copy_unknown(ISBN) -> bookstore_db:return_copy(ISBN).

find_book_by_isbn_exists(ISBN) -> bookstore_db:find_book_by_isbn(ISBN). 
find_book_by_isbn_unknown(ISBN) -> bookstore_db:find_book_by_isbn(ISBN).

find_book_by_author_matching(Author) -> 
    bookstore_db:find_book_by_author(Author).
find_book_by_author_unknown(Author) -> 
    bookstore_db:find_book_by_author(Author).

find_book_by_title_matching(Title) -> 
    bookstore_db:find_book_by_title(Title).
find_book_by_title_unknown(Title) -> 
    bookstore_db:find_book_by_title(Title).
Parallel testing

Once again, few changes are required aside from the ...