On 12/10/21 14:41, Pavel Cisar wrote:
Hi all,

our test suite contains many tests that depend on specific server configuration settings (mostly related to security, encryption, pools, timeouts, transactions etc.). As these configuration requirements may contradict each other, it's not possible to create single firebird.conf that would satisfy all tests. While the number of such tests is small, it's not marginal either. Now such tests fail (in best case) when requirement is not met, which spoils the QA run results when whole suite is run, or they have to be explicitly excluded which further complicates the management of QA runs.

As it's hard for us to automatically change the firebird.conf and restart the server quickly and reliably on all platforms, we couldn't run each test with its own engine configuration specification. It would also complicate automated testing on our build systems. So, instead this I'd like add the ability to check tested engine configuration to our QA tool set (pytest plugin), so tests could be automatically skipped if their requirement is not satisfied.

On FB v4+ it's easy, thanks to RDB$CONFIG pseudo-table. However, on v3 it's not that simple. I thought that I could use iMaster.get_config_manager() -> iConfigManager.get_firebird_conf() -> iFirebirdConf for that, but it does not work from client side (reads client config, so it works only with embedded). To make it work for remote access, we would need UDR that (according to Vlad) should be able to query master interface and get current config. We don't need anything complicated, just one function that would get configuration option name (string) and returns it's value (NULL or string [VARCHAR?]).

But here we run into two problems:

1) Although it should be simple UDR, it's out of my area of expertise and I'm not able to create it myself.

2) It should be part of Firebird 3 build process and stored in /plugins/udr like udrcpp_example is, so it could be used by QA.

Alternatively, we can simply skip such checks for v3 and skip these tests unless some env variable would have certain value, which could be also workable solution (although less convenient). In fact, if v5 would be really released next year (rendering v3 obsolete), it could be the simplest solution.

What is your opinion? Which route we should go?


I see no big use in full support of v.3. Requested UDR is trivial but I highly displike requirement of keeping it in std distro of firebird.




Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to