Each UCOSP participant is asked to log all the steps they take as they make progress through the semester. This includes difficulties they faced (getting set up, understanding how to model in Umple, using UmpleOnline, code that is difficult to figure out, and development tools that are hard to figure out, or don't seem to work properly). The more log entries added the more we can better get a grip on the usability issues with Umple, and the more we can help future new contributors come up to speed.
Please record entries in reverse chronological order
Now there is logic to check if guards are equivalent or not. It will do most basic comparison between the guards. For example, two guards like [(x + y) < z] and [z >= (y+x)] would be confirmed as equivalent. However, some equivalent guards will not be deems equivalent. For example: [(2+5) > 5] and [7 > 5] would not be resolved. Also correctly applies negation and deals with parenthesis. For example, [ ((a > b) || (variable && (!(b >= a) && (c < b))))] and [ (((!(b >= c) && (b >= a)) && variable) || (a > b))] would be equivalent. For more examples, refer to the test equivalentGuards.ump (cruise.umple/test/cruise/umple/statemachine/implementation/equivalentGuards.ump)
Creating pull request now.
12/19/16 - Finishing the work I did for issue 760. Trying to submit a pull request close to noon.
12/18/16 - Had several Christmas familial obligations I had to do.
12/17/16 - Continued working on issue 760. Discovered that my previous method was a little too specific for numerical expressions and the guards could be a more complicated that I initially thought. Basically started from scratch and created a more generic recursive method that compares the guards. I got it mostly working -- I had difficulty getting it to work properly with the constraintBodys (parenthesis) and negation. I didn't break any current tests, but I need to do more testing to see that it functions as it should.
Then I just need to add a bit of logic to get it to work for stateMachineExpr's and associationExpr's. Then add some tests.
Once my pull request for issue 766 was merged, created a pull request for the test updates mentioned below.
Added tests for issue 789. Fixed the umple test class that was related to issue 886 and pushed.
Looked into issue 886. I didn't think there was actually an issue here. I was right, and it turned out that the code sample in the ticket was what was incorrect.
12/12/16 - Worked on issue 908. After debugging, found out that I just needed to update the grammar file. Changed the regex for the number literal to check for negative numbers as well. Ran the tests and confirmed that I didn't break anything.
12/06/2016 - Pushed changes for 883. When I did this, I accidentally merged these changes with the fix for issue 819. Added test cases for issue 819. Created a single pull request for both issues.
12/05/2016 - Fixed issue 883. Made it so it only added the Null state when it didn't already have a Null state. Added test to testbed that checked if the java files would now compile and added tests for when one class extended a class with a nested state machine and another test for when multiple classes extended a class with a nested state machine
12/03/2016 - Started looking into issue 883. First I looked at the point where the “Null”s were being added and found out that the model at this point had extra an extra Null state. Found out this was only happening for when a class extended a class that had a nested state machine. This is because it would call prepare(UmpleClass uClass) on the class that had the nested state machine more than once, and it would add a Null state for each time it was called.
11/30/2016 - Wrote up logs for previous week’s work
11/25/2016
Continued working on issue 766. I scrapped all of my changes and started from square one. I ended up wasting a lot of time trying to find a different solution for this issue. I found out why my original change ended up breaking it. For nested states, it would end up determining that one of the parent states were exitable. And since I removed the isSameState check (this would check if the states were identical, or if they belonged to the same parent states), it would add in unnecessary exits from the parent states.
This also led me to discover an additional issue with nested state machines. When the nested state and the parent of the nested state both have exit code, only the nested state’s exit code is called when a transition causes a change in both the nested state and the parent state. I’m probably not being too clear here so I’ll give an example.
In this example, when flup is called and the transition exits both MotorIdle and StatusOn, only execute_exit_code_nestedState() is called when both execute_exit_code_nested_State() and execute_exit_code_parent() should be called.
I then tried to look through the entry code to determine if I could find a way to solve both of these issues. I didn’t make any significant headway, and I’m still at a loss with how to fix these issues. I need to spend more time trying to figure it out.
Also talked to Vahdat about issue 819. Beforehand, I had debugged it and it seemed to me like the issue was when it was analyzing the guard token. I wanted to make sure I was looking in the right area because the analyze token method was a little convoluted for me, so I wanted to make sure that was the right place to fix this issue before going forward. However, I had lost the location for this analyze token method because I had debugged it a while ago (turns out there’s a bookmark feature in Eclipse that I will use from now on). We debugged it together and were on the track to getting to the same conclusion (that the issue was with analyzing the token), but I had to leave to drive my mother to a doctor’s appointment. Later that night I saw that Vahdat finished looking into the issue and pushed a solution to it in branch issue819.
11/23/2016 - Worked on issue 766. I removed logic that would exclude exit code on self-transitions. Many tests started failing and I started to update them.
Failing test cases:
cruise.umple.statemachine.implementation.StateMachineTest
cruise.umple.statemachine.implementation.java.JavaStateMachineTemplateTest
cruise.umple.tracer.implementation.java.JavaConsoleTracerTest
cruise.umple.tracer.implementation.java.JavaFileTracerTest
cruise.umple.tracer.implementation.java.JavaStringTracerTest
cruise.statemachine.test.ConcurrentStateMachineTest
cruise.statemachine.test.FinalStateTest
cruise.tracer.test.ConsoleTracerStateMachineTest
10/25/2016 - Finished fixing issue 796. Added logic to remove the comparison true/false values. Created pull request and the builds have passed.
10/25/2016 - Looked at it with fresh eyes this morning corrected the fix. Now all tests are passing. Just need to update unit tests now.
10/24/2016 - Found the problem for 796 and implemented a fix. I now have a test failing. Figured out why it's failing and now I need to revise my fix.
10/23/2016 - Started looking into issue 796. Replicated the issue locally and beginning to debug to find the cause.
10/12/2016 - One of the builds failed when I pushed my changes for issue 767. Not clear on why, or what the difference is between the 4 builds that get executed when making a pull request.
10/12/2016 - Finished issue 767.
I was having an issue with it working in Eclipse. A lot of files weren't being recognized even though they existed. I tried doing a first build / full build multiple times, but I still had a bunch of these errors. Turns out I just had to refresh the cruise.umple package. I was refreshing with File --> Refresh but it didn't work until I right clicked cruise.umple and hit refresh.
Added a couple test cases for this scenario. I was having difficulty getting the test cases to work before, but I was able to get them working properly today. Turns out running them in Eclipse is helpful...
10/10/2016 - Looked through state machine bugs and came up with a short list of issues I might work on. 886, 819, 870, 883, 789, 766, 760, 796
10/4/2016 - Decided in group meeting to focus on several very high/high priority state machine issues throughout the term.
9/24/2016 - Continued working on issue 767. Found and fixed the issues in the Java generator and began to update unit tests. Made my own branch and started a pull request. There were some errors that I need to look into.
9/23/2016 - Started work on my first ticket, issue 767. Looked through the code to try to understand what was going on. Learned how to run and debug Umple in eclipse.
9/23/2016 - Downloaded a different version of Eclipse and got it and the plugin working properly.
9/22/2016 - Started to setup the project in Eclipse and get the plugin working. Was having weird issues with many classes not being recognized.
9/20/2016 - Got full build working once mirroservice.org came back up
9/20/2016 - Started to set up dev environment. Ran into an external dependency issue when trying to run the first build. Issue fetching org.eclsipse.cdt.core_5.5.0.jar because mirrorservice.org is currently down.