Performance Testing @ the Frontline

A hidden world where small things make a big difference

Steps to Upgrade Firebird v2.5.x to version 3.0.0 on Windows

Posted by Kim on Thursday, April 21, 2016


Just a few days ago Firebird v3.0.0 was released, and since many will update Firebird soon I wanted to make a small guide on how to do that on Windows. Read for more information about the release.

In this step-by-step guide I’ll outline what needs to be done to upgrade an existing Firebird v2.5.x server to version v3.0.0

After the steps the result should be a Stock (default) installation of Firebird v3.0.0 64bit.

What this guide does not have

I will not outline the process for upgrading the security database from old to new. This is an important step many installations, so be sure to check the Getting Started Guide from firebirdsql for more info!

What needs to be done for clients/client applications

Clients should ideally not have to change their code, only copy the new FBCLIENT.DLL file that resides in the Firebird Server installation folder to the clients.

By default the folders where the fbclient.dll files are (on the Server):

64bit installation:  C:\Program Files\Firebird\Firebird_3_0

32bit installation:  C:\Program Files (x86)\Firebird\Firebird_3_0

32bit and 64bit client DLL’s

You must remember to take the correct DLL for your application. If you install a 64bit Firebird the 32bit dll’s needed are stored under the WOW64\ folder in the installation folder.


Steps to Upgrade Firebird

Step 1 – Download what you will need

Download the installation files from

Choose the installer versions, as the installer will prepare your environment for your during installation.

Also make sure you read the Getting Started Guide for details & additional information.

Step 2 – Backup any old Databases

The file format (ODS version) changes, so be sure to backup your databases before you continue. Firebird 3 will not open old ODS format files.

Step 3- Shutdown/Uninstall old Firebird

In order to install the new Firebird v3 you need to shutdown and/or Uninstall the old one.

Shutdown and rename (leave installed if v3 installation fails for easy rollback):

Open services.msc and set Startup=Disabled for the Firebird Guardian (and the Firebird) process.

Go to C:\Program Files (x86)\Firebird and rename the “Firebird_2_5” folder to “Firebird_2_5-old”. This will make the new installer think there is no installation of Firebird on the server.


Run the uninstaller for Firebird v2.5

Step 4 – Install new Firebird Server

Run the installer you downloaded in step 1

After the installer has run, you should have a new Firebird server running on your machine as a Service.

Step 5 – Restore Databases

Using your preferred tools, restore the backed up databases.

Step 6 – Replace old fbclient.dll files

Copy the FBCLIENT.DLL file to all client machines, directories etc. The exact location depends on your client apps.

– Replace 32bit app fbclient.dll’s with new WOW64/fbclient.dll file
– Replace 64bit app fbclient.dll’s with new fbclient.dll file


And that’s about it! Test your applications and hopefully you can start enjoying the benefits of FBv3 immediately.

Posted in Firebird, Main | Leave a Comment »

LoadRunner Random Function with Normal (Gaussian) Distribution

Posted by Kim on Friday, July 10, 2015

Many times when performance tests are designed, the think-time between actions of the actual users is simulated with an approximation of the actual time it takes for a user to do their task. Unfortunately LoadRunner only offers a linear random distribution to an average wait time via the Runtime settings. Read the rest of this entry »

Posted in LoadRunner | Tagged: , | Leave a Comment »

Updated HTTP Client DLL for LoadRunner

Posted by Kim on Friday, March 22, 2013

Some time ago I posted an article about a custom DLL, and I’ve just updated the DLL and released the new version online.

The blog can be found at Custom DLL For LoadRunner,
and the download is on the Celarius downloads page.


Posted in Main | Leave a Comment »

Loadrunner v11.51 and Internet Explorer 10 – Not working?

Posted by Kim on Thursday, March 21, 2013

I upgraded my Win7 machine a little, and in the process also installed IE10, and to my great (or not so great I suppose) surprise I discovered that LoadRunner v11.51 with all current patches installed does not work when recording anymore. Read the rest of this entry »

Posted in LoadRunner | Leave a Comment »

Quick Install Guide for Apache+PHP+Firebird

Posted by Kim on Tuesday, November 13, 2012

Read the rest of this entry »

Posted in Firebird, Main | Tagged: , , | 3 Comments »

Syntax Highlighting for custom functions in LoadRunner VuGen

Posted by Kim on Thursday, November 3, 2011

Sometimes when you have a function that you use alot, it might be nice to have it color coded in code like the other lr_* commands.

I looked for a solution to this for awhile but didn’t find anything relating to VuGen and Syntax Highlight things, so I started digging a little deeper into VuGen’s configs and came up with a half-way solution to this.

Read the rest of this entry »

Posted in LoadRunner | Tagged: , , | Leave a Comment »

Installing & Patching LoadRunner v11 (ALM) from scratch on Win7 64bit

Posted by Kim on Thursday, September 29, 2011

Today I did this exercise with the Official HP LoadRunner v11 package.

And as was to be expected it wasn’t a simple click-click-go thing🙂

Read the rest of this entry »

Posted in LoadRunner, Tips and Q&A | Tagged: , , | 2 Comments »

More about the online-ticket system …

Posted by Kim on Tuesday, September 27, 2011

It’s now been two weeks, and the on-line ticket sales system is still not working as it should. All the sales kiosks in the whole country are now closed until further notice and the system is still slow, and has serious defects.

During these two weeks there has been some more information released to the public, both from the vendor (Accenture), the customer (VR) and the hosting company Tieto.

Among the more interesting ones:

Posted in Main | Tagged: , | Leave a Comment »

A real story about an online-ticket system failing under load …

Posted by Kim on Thursday, September 15, 2011

When I read the news today, I just had to share this with the Blog – This is such a good example of when things don’t go as planned.

Today there’s been big news-flashes on several Finnish news sites about the local train monopoly firm and their new web-based ticket sales system crashing under a heavy load. They had introduced a new online ticket sales system, and where literally overrun. The official comment from the company was (translated) “we where surprised to see such traffic amounts”.

Two of the articles: here, and here

Read the rest of this entry »

Posted in Main | Tagged: | Leave a Comment »

LoadRunner VuGen v9.52 on Win7 x64 – 100% Working (Updated)

Posted by Kim on Monday, April 18, 2011

I recently got Windows 7 x64 installed on my laptop, and as per information from HP LoadRunner v9.52 does NOT work with Windows 7, let alone x64 – So I got myself a Virtual Machine installed, where I have Win XP x86 for LoadRunner work.

Beeing a person who believes software should work in diverse environments, I also tried installing LoadRunner on the Win 7 machine, specifically Analysis and VuGen Read the rest of this entry »

Posted in LoadRunner | Tagged: , | 9 Comments »

Overriding LR functions with custom code

Posted by Kim on Tuesday, June 22, 2010

Most people do not know that LR supports overriding existing functions with custom ones in a very easy way.

I had a situation where I had a pre-made script that had fixed think-time values for the lr_think_time() calls, and they of course were completely wrong. So my problem was that I had a lot of lr_think_time() places and I didn’t want to go through them all myself. Read the rest of this entry »

Posted in LoadRunner | Tagged: , | 13 Comments »

Creating a DLL with Delphi for LoadRunner

Posted by Kim on Tuesday, April 13, 2010

This article extends my previous post on Using a Custom DLL in LoadRunner and now shows by example how a DLL is actually created in Delphi and used from LoadRunner.

The DLL I’ll create here is a simple stub with a few basic functions and can serve as a template for any type of DLL that you want to create.

I’ll show how to avoid the most common problems of sending/retrieving strings to/from the DLL as well as how to handle the Unicode situation with D2009 and D2010 (LR is not Unicode enabled). Read the rest of this entry »

Posted in Delphi, LoadRunner | Tagged: , , | 5 Comments »

Handle HTTP Re-Directions in LoadRunner Scripts yourself

Posted by Kim on Sunday, April 11, 2010

Sometimes you want to grab a Session-Cookie or something else from the HTTP Header’s during a redirection, but normally LoadRunner does not allow you to web_reg_save() those if there are multiple re-directions, and the same “variable” appears multiple times. Read the rest of this entry »

Posted in LoadRunner | Tagged: | 7 Comments »

SHA-1 hash for LoadRunner

Posted by Kim on Tuesday, March 2, 2010

One of my colleagues at work was testing a solution that obfuscated passwords using the SHA1 algorithm, and was looking for a suitable solution to replicate this with LoadRunner. As I’ve used SHA1 before for other things, I promised to look around and see if I could help out.

As it turns out a suitable source was found and I made the necessary changes to the code to make it work in LoadRunner. A big thank you to Paul E. Jones for providing a free SHA1 implementation. Read the rest of this entry »

Posted in LoadRunner | Tagged: , | 21 Comments »

lr_save_float() function for LoadRunner

Posted by Kim on Wednesday, January 27, 2010

Just a quick post of a potentially useful function for LoadRunner. Read the rest of this entry »

Posted in LoadRunner | Tagged: | 1 Comment »

Delphi is NOT dying… at least not for me!

Posted by Kim on Saturday, January 16, 2010

I happened to see a blog post about Delphi Dying, and I definitely feel the need to say that “NO, DELPHI IS NOT DYING” (at least not for me)!

It’s still my tool of choice for any kind of development, be it server or client . I’ve seen too many issues with both performance and stability when it comes to Java client apps… Just the other day I had a time tracking software (written in Java). Didn’t work anymore for no reason whatsoever, worked yesterday. Had to downgrade the to update 7 to get it to work.. Just a total PAIN IN THE BUTT with all those update this and update that things .. How hard can it be to get the freaking java-code to work with different updates .. I just don’t get it .. but enough of rant on that for now ..

This also merits a small example of why I think Delphi is good: A buddy at work seemed surprised that I made a TCP Port redirection Desktop app in less than a day, with all the UI parts and load/save things. He used to do lots of Java coding (on the server side) and just seemed to be surprised that with I D2010 managed to complete the app in so short a time?!

I think this goes to prove that Delphi really is an excellent RAD tool that produces fast & reliable code without the need to deploy anything but the .exe itself (= no dependencies on update packs🙂 ).

I’ve always been, and always will be a Delphi developer.

Posted in Delphi | Tagged: | Leave a Comment »

LoadRunner and its non-standard SMTP implementation

Posted by Kim on Sunday, January 10, 2010

In one of my recent assignments I was asked to investigate how the SMTP vuser type behaves in LoadRunner. The need was to send alot of EMail messages to a SMTP server, and specifically the CC and BCC fields where important.

As it turns out the SMTP implementation in LoadRunner (v8.1 and v9.5x) does not quite follow the standard when it comes to the CC and BCC headers. Read the rest of this entry »

Posted in LoadRunner | Tagged: , , | 2 Comments »

LoadRunner & HTTP 401 Authentication (Updated)

Posted by Kim on Wednesday, December 23, 2009

In one of my recent projects I stumbled upon an interesting problem situation with the HTTP Authentication mechanism.

I had a Machine to Machine (M2M) interface, where clients used HTTP authentication to identify themselves to the server while sending data. In this scenario there was no HTTP 401 response from the server, because the client included the authentication info in the initial request. Read the rest of this entry »

Posted in LoadRunner | Tagged: , | 9 Comments »

Base64 Encode/Decode for LoadRunner

Posted by Kim on Wednesday, September 30, 2009

Recently I had the need to decode a Base64 string received from a server and in the process I created an include file that contains both Encode and Decode functions for base64. Use & Abuse as you see fit! Enjoy! Read the rest of this entry »

Posted in LoadRunner | Tagged: , | 40 Comments »

The end of summer and the start of work

Posted by Kim on Friday, September 11, 2009

And so ends the summer & vacations and work begins … Back at the desk solving some the performance problems of the world.

Posted in Main | Leave a Comment »

Vacation time!

Posted by Kim on Saturday, August 8, 2009

A well performed Golf shot

A well performed Golf shot

Yes it’s true, I’m on vacation and not really doing very much at all … at least no real performance testing work!

But I’m active with planning the future for my company, and so we changed our look to more match the new comapny vision. In the near future I will start writing blog articles on the celarius pages as well as here, but they will be more from a commercial standpoint. This blog still remains as my private projects/discoveries etc blog..

And as it is summer and and I performed outstandingly on the golf-course on Friday I just have to include my opening shot on a 150 meter PAR 3 hole. The ball landed 15 cm (6″) from the flag, and my birdie was assured! The Birdie-whiskey we enjoyed afterwards was better than usual!

I hope you all have had a good summer and recharged your battires for a potentially demanding fall’09 !

Posted in Main | Leave a Comment »

Performance Test Tool Poll

Posted by Kim on Friday, May 8, 2009

I’ve had my poll for “Which LoadTesting tool do you use most?” open for some time now, but unfortunately there has been a very low level of participation, and therefore I now ask you to please participate and let us know what tools you are using!

Posted in Main | Tagged: , | 2 Comments »

Search & Replace function for LoadRunner

Posted by Kim on Friday, March 13, 2009

Sometimes it is necessary to process parameters in LoadRunner after they have been “captured” using web_reg_save() or similar methods. There is no built-in function to do this, and I’ve seen multiple horrific attempts at different kinds of Search & Replace methods over the years.

In light of this I decided to post the source for my working solution that does not eat memory, is fast and is LoadRunner parameter friendly. It can be used by anyone who has worked with LoadRunner before! Read the rest of this entry »

Posted in LoadRunner | Tagged: | 42 Comments »

Using a custom DLL in LoadRunner

Posted by Kim on Tuesday, February 24, 2009

Sometimes LoadRunner does not provide all the needed features that one needs when doing performance testing. One option is to write DLL’s to handle the needed stuff and writing your own custom DLL’s is really easy once you get the hang of it!

I needed to do a few HTTP calls “under the radar” from a script so using Delphi 2009 I wrote my own HTTPClient DLL that allows me to do a HTTP GET to a specific URL without adding to the statistics (Pages and Hits/Sec stats). Read the rest of this entry »

Posted in Delphi, LoadRunner | Tagged: , | 15 Comments »

Optimizing a Delphi 2009 app using Firebird 2.5 Alpha 1

Posted by Kim on Tuesday, February 3, 2009

The last few days I’ve spent optimizing an application written in Delphi 2009 that talks to a Firebird database using the standard TIBDatabase, TIBTransaction and TIBSQL components  The application needs to do alot of reading/writing to the database, and was rather slow so I had to optimize it a little … Read the rest of this entry »

Posted in Delphi, Firebird | Tagged: , , | 15 Comments »

Windows 7 – A promising thing when it comes to performance

Posted by Kim on Saturday, January 17, 2009

As soon as I was able to (the download surge killing Win7 downloads prevented it for a while) I downloaded and installed 2 copies of the Win7 beta. One was on an old 3GHz HT Intel with 2Gb mem and the other on a Virtual PC inside my QuadCore Vista ultimate machine.

The installation was smooth on both, took about the same time and I was amazed at the lack of problems along the way. Both recognized all hardware components without problems and everything seemed fast on the GFX level even when I was using a VGA mode for both (no seeing any GFX specialties).

I next installed Firebird v2.1 (latest stable) and it insalled without problems as well on both machines. I didn’t have much time to play around with the OS but the little I did showed me a stable well working system with very little or no hichups at all.

In my personal opinion this Win7 will be a hit-OS in the future. It feels fast and looks good and I see no reason for me to start looking into alternative OS’s in the future. If drivers and programs are made compatible with this Beta I suspect they will work well with the official release and if MS adds WinFS or other enhancements to it later they will likely not break the compatibility in any way.

I for one will surely use it in the future! And a s bonus it seems my Delphi 2009 programs are also working flawlessly on it!

Posted in Main | Tagged: , , , | Leave a Comment »

How users see a SAP EP Portal perform …

Posted by Kim on Friday, December 12, 2008

I recently had the opportunity to test a SAP Enterprise Portal (web interface) with several different tools. I used both LoadRunner and QALoad, but in the end the customer chose LR for this, since scripting was somewhat easier in LR.

The performance of the EP portal is fairly good when it comes to communicating with the server on a HTTP protocol level, but boy was the customer in for a surprise when they actually used the interface. Read the rest of this entry »

Posted in Main | Tagged: , , | Leave a Comment »

In-Script simulation of a load-balancer with LoadRunner

Posted by Kim on Thursday, September 18, 2008

When testing enterprise grade web-based solutions there is often a company-wide LoadBalancer present that is a black-box from the testers point of view. Bypassing the LoadBalancer during testing is usually very important to be able to determine one servers limits or capacity.

There are however situations where the LB’s need to be simulated in a controlled way, and having the load share known and controlled during testing. To achieve this there is a simple trick that can be used in LoadRunner scripts. Read the rest of this entry »

Posted in LoadRunner | Tagged: , | 10 Comments »

Firebird v2.5 Alpha 1 really makes a differance

Posted by Kim on Wednesday, August 27, 2008

While on vacation I’ve been working on a pet-project that has been around for many years now. The service is a mobile device chat and is powered by Firebird and PHP.

There used to be lots of problems handling more than 400 simultaneous users, but after a DB upgrade to Firebird v2.5 Alpha 1 things really look different.

Previously the DB machine (Dualcore) had one of the CPU’s running at 100% and the other not doing much (FB was Superserver) but after the switch the TOTAL CPU now ranges between 10% and 50% on the DB machine. At the same time the WebServer CPU load also decreased and is constantly under 60% where it used to be over 95% all the time!

So by just switching to the new DB engine a tremendous performance gain was achieved! Also a lot less errors are reported to the PHP error logs. The ones still coming are a deadlocks, but around 30 / 24h which is a lot less than it used to be!

To the Firebird team I want to say “THANK YOU for making a great database engine” !

Posted in Firebird | Tagged: , , , | 14 Comments »

More Apache+PHP+Firebird Performance results

Posted by Kim on Wednesday, July 16, 2008

Adding to my previous post on Apache, PHP and Firebird performance I have now achieved a new higscore of 155 pages/sec!

In order to achieve this I had to tweak the SQL statements a little (removed the UPPER() parts), modified the firebird.conf a little and moved the DB to another T61p (DualCore 2.2 GHz) machine. Read the rest of this entry »

Posted in Firebird | Tagged: , , | Leave a Comment »