The idea is simple. By introducing named "breakpoints" in code run by threads, the test management code can control the execution of a thread by telling it to go to a certain breakpoint. Breakpoints are added to normal code using statements like:
assert TestableThread.breakpoint("breakA");
By using an assert, the breakpoint code will not incur any performance penalty when the software is run in production (the default way to run Java software is without -ea, that is, without enabling assertions).
Given defined breakpoints, test code can let threads execute till they reach a given named breakpoint, for example, the code:
t1.goTo("breakA");
will enable the t1 thread to run until it reaches breakpoint "breakA". When the breakpoint is reached, the t1 thread will stop executing until it gets another goTo() request.
The implementation below is only 50 LOCs or something, but still have been shown to be useful. There are, of course, lots of improvements / additions to be made including conditional breakpoints.
Code:
public class TestableThread extends Thread {
private final Object sync = new Object();
private volatile String breakName;
public TestableThread(Runnable r) {
super(r);
}
/**
* Run thread until it hits the named breakpoint or exits.
*/
public void goTo(String breakName) {
synchronized (sync) {
this.breakName = breakName;
sync.notifyAll();
}
if (getState() == Thread.State.NEW) {
start();
}
}
/**
* Run thread, not stopping at any break points.
*/
public void go() {
goTo(null);
}
public static boolean breakpoint(String breakName) {
if (breakName == null) {
throw new IllegalArgumentException("breakName == null not allowed");
}
Thread thread = Thread.currentThread();
if (thread instanceof TestableThread) {
TestableThread tt = (TestableThread) thread;
synchronized (tt.sync) {
while (tt.breakName != null && tt.breakName.equals(breakName)) {
try {
tt.sync.wait();
} catch (InterruptedException e) {
throw new Error("not expected: " + e);
}
}
}
}
return true;
}
}
The programming was very easily understand and more important coding are provided on this post and this is very valuable in my studies,all coding easily understand and develop more skills,thanks for sharing this post.
ReplyDeletehadoop
Java Training Institutes Java Training Institutes Java EE Training in Chennai Java EE Training in Chennai Java Spring Hibernate Training Institutes in Chennai J2EE Training Institutes in Chennai J2EE Training Institutes in Chennai Core Java Training Institutes in Chennai Core Java Training Institutes in Chennai
DeleteJava Online Training Java Online Training Java Online Training Java Online Training Java Online Training Java Online Training
DeleteHibernate Online Training Hibernate Online Training Spring Online Training Spring Online Training Spring Batch Training Online Spring Batch Training Online
ReplyDeleteReally very nice blog information for this one and more technical skills are improve,i like that kind of post.
SAP training in Chennai
All are saying the same thing repeatedly, but in your blog I had a chance to get some useful and unique information, I love your writing style very much, I would like to suggest your blog in my dude circle, so keep on updates.
ReplyDeleteSAP training in Chennai
Thanks for this blog. All screenshots can explain the full blogs easily. This is very easy to understand. Using this screen shots know the details becomes easy.
ReplyDeletePPC Services Chennai
This blog explains the details about what happened after the expressions. This gives the details of the thinking next what to do. All that are discussed and provide a grateful talk.
ReplyDeleteDigital Marketing Company in Chennai
This idea is mind blowing. I think everyone should know such information like you have described on this post. Thank you for sharing this explanation.
ReplyDeleteYour final conclusion was good. We are sowing seeds and need to be patiently wait till it blossoms.
Informatica Training in Chennai
Wow amazing i saw the article with execution models you had posted. It was such informative. Really its a wonderful article. Thank you for sharing and please keep update like this type of article because i want to learn more relevant to this topic.
ReplyDeleteSEO Company in Chennai
This content creates a new hope and inspiration with in me. Thanks for sharing article like this. The way you have stated everything above is quite awesome. Keep blogging like this. Thanks.
ReplyDeleteDigital marketing company
Digital marketing services
Superb. I really enjoyed very much with this article here. Really it is an amazing article I had ever read. I hope it will help a lot for all. Thank you so much for this amazing posts and please keep update like this excellent article.thank you for sharing such a great blog with us. expecting for your.
ReplyDeleteDigital Marketing Company in India
Really it was an awesome article...very interesting to read..You have provided an nice article....Thanks for sharing..
ReplyDeleteAndroid Training in Chennai
Ios Training in Chennai
thanks for giving that type of information. ielts coaching in gurgaon
ReplyDeleteThis is a fabulous article, please try to give more useful information.
ReplyDeleteimportance of cloud computing
why cloud computing is important
advantages of machine learning
advantages of devops
difference between asp and php
javascript interview questions advanced
This article will outline all the different strategies you should be aware of when it comes to soccer.
ReplyDeleteBest IAS Coaching In India
https://www.sharmaacademy.com/mppsc-notes.php
ReplyDeleteSharma Academy is Central Indias largest provider of Mppsc Notes and Mppsc Study Material.