---
title: "CAT 0.16.0"
description: "CAT release notes 0.16.0"
url: "https://docs.justcat.it/release-notes/archive/0.16.0/"
---
# CAT 0.16.0


## Testing MS Excel Data

We have a new provider for testing MS Excel data: `Excel@2`. **It is a preview, anything may change.** Main advantages of the new provider are:

* it does not need any prerequisites, it comes with CAT out-of-the-box

* it allows you to run advanced SQL queries against MS Excel sheets

* it uses cool and maintained technology under the hood

* it will help us to port CAT to Linux in the future.


Complete example:

~~~~~~~~~~~~~~~~yaml
Data Sources:
- Name:     Departures
  Provider: Excel@2
  Connection string: Departures.xlsx
  Sheets:   Sheet1

Tests:
- Name: Average number of passengers check
  Description: Average number of passengers is within the expected limit
  First Data Source: Departures
  First Query: |
      SELECT  CASE
                 WHEN AVG(PASSENGERS) BETWEEN 100 AND 150
                 THEN 'OK'
                 ELSE 'KO'
              END
      FROM    Departures.Sheet1 -- use DataSourceName.SheetName here
      WHERE   DATE_OF_FLIGHT between today() and (today() + 7)
  Second Data Source: Departures
  Second Query: |
    SELECT 'OK'
  Expectation: sets match

~~~~~~~~~~~~~~~~

You have to specify what sheets you want to test (the others are ignored). Notice the example uses constructs like aggregate functions, `CASE WHEN` and date functions.

> **🙀:** At this stage the provider does NOT yet support loading of test definitions. Coming soon ;-)



The older providers `Excel@1` and `ExcelOleDB@1` are still supported.

[Full documentation](https://docs.justcat.it/reference/data-sources/providers/excel-2/ "Excel@2 Provider")


## Executing Tests in Parallel

In previous releases, CAT was executing tests one by one. It did not start evaluation of a new test until the previous one was completely finished.
This is still the default behavior of CAT.

However, if you decide it is useful to split the running of the tests into more parallel threads running at the same time, you now have the option.

Just put this to your project file:

~~~~~~~~~~~~~~~yaml
# multithreading settings:
Threads: 3
~~~~~~~~~~~~~~~

The setting must be in the root of the project file - there must be no whitespace before the keyword. In the example above, CAT will create three parallel running threads. You don't have an option to specify what test is processed in what thread, they just take unexecuted tests from a queue and process them, like three cats drinking from one bowl.

> **🙀:** Running too many queries against your server(s) in parallel may cause significant performance problems for other users / applications.
It is a responsibility of the tester / developer to evaluate the right level of parallelism.



[Full documentation](https://docs.justcat.it/reference/project-file/root-settings/ "Multithreading")

## Example Database, CAT Examples

We created a sample database of a fictitious airport company. It is a simple one, it is easy to understand and we'll use it for examples how to use CAT. You can get it from our GitHub:

<https://github.com/datasmartly/aero>

There is one more repository, with complete examples of how to use CAT:

<https://github.com/datasmartly/cat>

The latter is still work in progress, we'll announce it soon.

## Fixes

`SqlServer@1` provider timed out always after 30 seconds. Now, by default, there is no timeout, unless you manually set it.

~~~~~~~~~~~yaml
Tests:
- Name: Some long running test
  Data Source: DWH
  Query:  SELECT * FROM SomeHugeTable
  Expectation: ...
  ...
  Timeout: 90 # seconds
~~~~~~~~~~~

The example above was failing after 30 seconds before the fix. Thanks `@Tereza Černá` for reporting the bug.

--------

Happy testing, wish you all green ;-)

CAT team

