You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Thomas Szokol <sz...@gmail.com> on 2005/09/16 16:38:44 UTC

[configuration] FileChangedReloadingStrategy problem

Hello!


I'm Szokol Tamás and I encountered the following problem while using 
FileChangedReloadingStrategy
and I ask you to comment it and help me in this topic.

I created an application which uses a property file for configuration 
purposes. The application 
behaves different ways according to the configuration. I handle the 
administration of this file 
by using the PropertiesConfiguration class. It works fine from the 
application.

The problem occured when I started to unit test the application using JUnit. 
I test the application's
functionality whether it behaves the expected way according to the content 
of the configuration file.
To achieve this I have to change the configuration runtime in the test cases 
and inspect the expected and
the actual responses. So I have to use the FileChangedReloadingStrategy on 
my application and test side to 
notify that the configuration has been changed by the test classes.
In this case the following strange thing happens: I can normally read the 
configuration in the test case, 
find the values of the keys I use, but after the first time I use the 
setProperty function on the test 
side to change the configuration the whole content of the configuration file 
will be terminated, and I 
end up having an empty property file.

My observations were the following while I examined the conditions of this 
problem:

1. I tested the FileChangedReloadingStrategy in two simple dummy POJOs. Both 
of them use PropertiesConfiguration
with FileChangedReloadingStrategy. I set two different reloading time 
intervals. ClassA reads a property, goes to
sleep, ClassB sets a new value for the property ClassA has just read, ClassB 
goes to sleep, ClassA wakes up, reads
the value of the property and it is the new one, ClassB wakes up, reads the 
value of the property and it is the new one,
end of story. so FileChangedReloadingStrategy works fine in this scenario.

2. If I didn't use FileChangedReloadingStrategy the handling of the property 
file was 100% correct. 
But of course in this case the application had no idea about the changes of 
the property file.

3. If I didn't use JUnit - so I didn't extend TestCase - and used 
PropertiesConfiguration with 
FileChangedReloadingStrategy the handling of the property file was 100% 
correct. But in this case testing
is harder without JUnit.

4. Using or not using auto save functionality does not effect the result, it 
doesn't work anyway.

I checked the mailing list archive of jakarta commons and I didn't find any 
hints I could use.

I ask you to help me solving this problem.

Sorry about the long message, I tried to be precise.


Thank you for your attention and your time.

Best regards,
Szokol Tamás

Re: [configuration] FileChangedReloadingStrategy problem

Posted by Emmanuel Bourg <eb...@apache.org>.
Hi Tamás, I'm not sure to understand your issue, but it looks like you
are testing the reloading mechanism which is already covered by our unit
tests. I would advise writing a different test using a specific
configuration file for each behavior of your application depending on
the configuration. The reloading is quite tricky to test properly, you
can rely on our tests instead of writing your own.

Emmanuel Bourg



Thomas Szokol wrote:
> Hello!
> 
> 
> I'm Szokol Tamás and I encountered the following problem while using 
> FileChangedReloadingStrategy
> and I ask you to comment it and help me in this topic.
> 
> I created an application which uses a property file for configuration 
> purposes. The application 
> behaves different ways according to the configuration. I handle the 
> administration of this file 
> by using the PropertiesConfiguration class. It works fine from the 
> application.
> 
> The problem occured when I started to unit test the application using JUnit. 
> I test the application's
> functionality whether it behaves the expected way according to the content 
> of the configuration file.
> To achieve this I have to change the configuration runtime in the test cases 
> and inspect the expected and
> the actual responses. So I have to use the FileChangedReloadingStrategy on 
> my application and test side to 
> notify that the configuration has been changed by the test classes.
> In this case the following strange thing happens: I can normally read the 
> configuration in the test case, 
> find the values of the keys I use, but after the first time I use the 
> setProperty function on the test 
> side to change the configuration the whole content of the configuration file 
> will be terminated, and I 
> end up having an empty property file.
> 
> My observations were the following while I examined the conditions of this 
> problem:
> 
> 1. I tested the FileChangedReloadingStrategy in two simple dummy POJOs. Both 
> of them use PropertiesConfiguration
> with FileChangedReloadingStrategy. I set two different reloading time 
> intervals. ClassA reads a property, goes to
> sleep, ClassB sets a new value for the property ClassA has just read, ClassB 
> goes to sleep, ClassA wakes up, reads
> the value of the property and it is the new one, ClassB wakes up, reads the 
> value of the property and it is the new one,
> end of story. so FileChangedReloadingStrategy works fine in this scenario.
> 
> 2. If I didn't use FileChangedReloadingStrategy the handling of the property 
> file was 100% correct. 
> But of course in this case the application had no idea about the changes of 
> the property file.
> 
> 3. If I didn't use JUnit - so I didn't extend TestCase - and used 
> PropertiesConfiguration with 
> FileChangedReloadingStrategy the handling of the property file was 100% 
> correct. But in this case testing
> is harder without JUnit.
> 
> 4. Using or not using auto save functionality does not effect the result, it 
> doesn't work anyway.
> 
> I checked the mailing list archive of jakarta commons and I didn't find any 
> hints I could use.
> 
> I ask you to help me solving this problem.
> 
> Sorry about the long message, I tried to be precise.
> 
> 
> Thank you for your attention and your time.
> 
> Best regards,
> Szokol Tamás
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org