Join 34,000+ subscribers and receive articles from our blog about software quality, testing, QA and security.

New logging protocol


is it possible to add a new protocol: ado?

So that debugging informations can be written to a database? The protocol definition could be created via the procedure “PromptDataSource” in the unit ADODB?

With the restriction that a specific table has to be created: SmartInspect has only an “insert into…” todo?

Regards, Kai


Hello Kai,

Thanks for your suggestion. We already thought of adding database logging support to SmartInspect, but we haven’t made a decision yet if and how we implement this. But what I can say is that the upcoming SmartInspect 2.0 release will not include database logging. The new major version will be released this quarter and it is definitely too late to add such a big feature.

Although it is certainly correct that it would most likely boil down to an “INSERT INTO” when writing a log packet, this is only one part of the story. First, we would need to implement the new database protocol for each of the available libraries including the automated tests and their documentation. Then we would need an appropriate database interface for the Console to load created logs from the database (and maybe also to store logs). Otherwise the database protocols in the libraries were of little use. We would also need to update the Configuration Builder to handle the new database protocol. While this is all doable of course, we decided against it for the SmartInspect 2.0 release and focused on a different feature set.

Fortunately, SmartInspect 2.0 will introduce a mechanism in the libraries to register and use your own custom protocols. This way it will be very easy to add a lightweight database protocol yourself. You would just need to derive a new class from TSiProtocol, implement the abstract methods (connecting, disconnecting and writing a packet) and then register this new protocol class with a register method. Once the new protocol is registered, it can be used in the connections string like any other protocol. It can also use protocol options similar to the built-in protocols to customize its runtime behavior (e.g. to specify the database host, username and so on) and also benefits from the options common to all protocols (like the backlog functionality).