AnyLogic model run profile - anylogic

Is there any way to get time consumption profile of an AnyLogic model?
I saw this question from Dylan where he did some kind of method profiling : does it comes from an AnyLogic intern tool or from something external? How can I generate it for my model?
It would give me a first approach to understand the weak performance I get from my model but if something more precise exists (like in other discrete event simulation software) I would be happy to learn about.

What Dylan is using there is an application called VisualVM. You can download it here:
https://visualvm.github.io/
Depending on your operating system you can learn how to install it and run it here:
https://visualvm.github.io/gettingstarted.html
And when you run VisualVM, whenever you run a simulation experiment, it will immediately appear in the VisualVM panel automatically. It should be fairly straight forward.

Another tool is Java Mission Control, which comes included with the Java Development Kit (JDK).
To start profiling you start your model but not yet run it. The Java thread of your model will apear in the JVM Browser. You right-click on it and select "Start Flight Recording" and choose how long you want the recording to be. Now you let your model run.
Once the recording is done, you can analyse the profile, which looks something like this:

Related

how to do post synthesis simulation in vivado

I am using the Vivado Design Suite 2017.2
I have a vhdl design and a testbench added to a simulation set.
Behavioral simulation runs nicely. If I synthesize the design and click on "Run Simulation - Post synthesis functional" it still runs without errors. Yet I am not sure if it really does simulate my synthesized design or if it is just doing the 'old simulation' once again. The point is that I know that for post synthesis simulation a new vhdl/verilog file gets created that represents the netlist. Yet I did not make any changes to the testbench, saying I did not instantiate the new file explicitely. The question now is whether this happens automatically.
I have looked through the tutorials but could not find an answer.
Any help will be appreciated.
If you want to be sure your are simulation the real net list you can 'browse' the simulation hierarchy (Like you normally do to e.g. to add signals to the wave window). A the bottom level of your browsing tree you should only find FPGA primitives.

I want to use Anylogic as a visualization tool for a big log file? Is it possible?

I asked a similar question to Anylogic linkedin forum so sorry for multiple posting (possibly for some of you). I just heard about the Anylogic program. My purpose is not simulation I want to visualize a log file. I want to allow the admin-user (who will be the user of the Anylogic model) to enter some settings which will cause some filtering and I want to visualize the whole file with Anylogic.
The file is a communication file. Possibly I will show communication attendees and interactions using Anylogic. I want to emphasize unnormal patterns in the log using visual and interactive properties of Anylogic. There may also some need for like zooming in and out during the execution of the model.
Is it something very difficult to do? I am a Java developer. I can understand that I should have to learn Anylogic. What other skills and development and test environments (Ide etc.) do I need?
I plan to do a serial of implementations for several log file types and currently I am trying to find the best tool which will allow me to make changes in visualization part of the models easily till I find the best representation of the data.
There are some examples of Anylogic which are installed built-in but I couldn't see an example which suits my situation. I do not know where to start. If someone helps me to start the design I would be very happy :)
Thank you for your attention..
Edit:
I am attaching a sample stereoscopic view model and a sample view. I want to do something similar to this. Is it ok with AnyLogic?
Ferda
simple answer: yes its possible.
Some more comments:
I am currently working on a very similar project actually. For me as an experienced AnyLogic user, it is very natural and AnyLogic offers all the features you ask for.
Is it something very difficult to do?
That depends on how quickly you can learn AL. But if you are experienced with Java, it will not be too hard, I imagine.
What other skills and development and test environments (Ide etc.) do I need?
None, really. You need to figure out how to use the visual elements of AL. All of them can be changed statically via the AL IDE but you can always change them dynamically via Java code. That is very important to realize and play around with.
I am attaching a sample stereoscopic view model and a sample view. I want to do something similar to this. Is it ok with AnyLogic?
Yes, that can be done.
I suggest you try checking the example models that come with AL. If you find something that looks like what you need, try to figure out how they did it. Then try to recreate it in a simple example model for yourself.

Using Embedded coder to generate subsystem level code?

I want to know whether embedded coder be used to generate subsystem level code only and not the whole model, The model i am working on has multiple complex logic running on a memory constrained Real time system.
I want to generate the logic for a subsystem and analyze it, before proceeding to others.
Because these systems are interdependent,reducing complexity at a later stage in development would be a difficult task.
Yes, I believe so. if you right-click on a subsystem, you should have an option "Generate code" or similar.

Unit Testing is Wonderful, But

I took the time to set up some Unit Tests and set up the targets in XCode, etc., and they're pretty useful for a few classes. However:
I want to test small UI pieces for which I don't want to launch the entire application. There is no concept of pass/fail: I need to "see" the pieces, and I can make dummy instances of all the relevant classes to do this. My question is: how can I set this up in XCode?
I realize I could use another XCode project for each class (or groups of classes), but that seems a bit cumbersome. Another target for each?
I know that you're looking for an approach to testing UI components that doesn't require a fully functional application, but I've been impressed with what the new UI Automation instrument introduced in iOS 4.0 lets you do.
This instrument lets you use Javascript scripts to interactively test your application's interface, and it does so in a way that does not require checking exact pixel values or positions on a screen. It uses the built-in accessibility hooks present in the system for VoiceOver to identify and interact with components.
Using this instrument, I have been able to script tests that fully exercise my application as a user would interact with it, as well as ones that hammer on particular areas and look for subtle memory buildups.
The documentation on this part of Instruments is a little sparse, but I recently taught a class covering the subject for which the video is available on iTunes U for free (look for the Testing class in the Fall semester). My course notes (in VoodooPad format) cover this as well. I also highly recommend watching the WWDC 2010 video session 306 - "Automating User Interface Testing with Instruments".
Well, you cannot call showing a piece of some GUI a testing even if that GUI is a part of a large application. What you can do here is create a separate executable target and write a small tool that reuses GUI components from your application and shows them to you basing on input parameters. This will eliminate the need for many many different targets.
If you still insist on using unit tests, you can show your GUI for some period of time, for example, 10 seconds. So the test case will run until GUI is closed or timeout elapses and each test will take up to N seconds to execute.
This is a good question. I think you actually do not want to use unit tests for those 'visual confirmations'. Personally I usually write little test apps to do this kind of testing or development. I don't like separate targets in the same project so I usually just create a test project next to the original one and then reference those classes and resources using relative paths. Less clutter. And it is really nice to be able to test more complex user interface elements in their own little test environment.
I would take a two-level approach to UI "unit testing":
lthough Cocoa/CocoaTouch are still closer to the Model-View-Controller than the Model-View-ViewModel paradigm, you can gain much of the testability advantage by breaking your "View" into a "view model" and a "presenter" view (note that this is somewhat along the lines of the NSView/NSCell pair; Cocoa engineers had this one a long time ago). If the view is a simple presentation layer, than you can test behavior of the view by unit testing the "view model".
To test the drawing/rendering of your views, you will have to either do human testing or do rendering/pixel-based tests. Google's Toolbox for Mac has several tools for doing pixel-by-pixel comparison of rendered NSViews, CALayers, UIViews, etc. I've written a tool for the Core Plot project to make dealing with the test failures and merging the reference files back into your unit test bundle a little easier.

GUI Automation testing - Window handle questions

Our company is currently writing a GUI automation testing tool for compact framework applications. We have initially searched many tools but none of them was right for us.
By using the tool you can record test-cases and group them together to test-suites. For every test-suite there is generated an application, which launches the application-under-test and simulates user-input.
In general the tool works fine, but as we are using window handles for simulation user input, you can't do very many things. For example it is impossible for us to get the name of a control (we just get the caption).
Another problem using window handles is checking for a change. At the moment we simulate a click on a control and depending on the result we know if the application has gone to the next step.
Is there any other (simpler) way for doing such things (for example the message queue or anything else)?
Interesting problem! I've not done any low-level (think Win32) Windows programming in a while, but here's what I would do.
Use a named pipe and have your application listen to it. Using this named pipe as a communication medium, implement a real simple protocol whereby you can query the application for the name of a control given its HWND, or other things you find useful. Make sure the protocol is rich enough so that there is sufficient information exchanged between your application and the test framework. Make sure that the test framework does not yield too much "special behavior" from the app, because then you wouldn't really be testing the features, but rather your test framework.
There's probably way more elegant and cooler ways to implement this, but this is what I remember from the top of my head, using only simple Win32 API calls.
Another approach, which we have implemented for our product at work, is to record user events, such as mouse clicks and key events in an event script. This should be rich enough so that you can have the application play it back, artificially injecting those events into the message queue, and have it behave the same way it did when you first recorded the script. You basically simulate the user when you play back the script.
In addition to that, you can record any important state (user's document, preferences, GUI controls hierarchy, etc.), once when you record the script, and once when you play it back. This gives you two sets of data you can compare, to make sure for instance that everything stays the same. This solution gives you tests that not easy to modify (you have to re-record if your GUI changes), but that provide awesome regression testing.
(EDIT: This is also a terrific QA tool during beta testing, for instance: just have your users record their actions, and if there's a crash, you have a good chance of easily reproducing the problem by just playing back the script)
Good luck!
Carl
If the Automated GUI testing tool has knowledge about the framework the application is written in it could use that information to make better or more advanced scripts. TestComplete for example knows about Borland's VCL and WinForms. If you test applications build using Windows Presentation Foundation has advanced support for this build in.
use NUnitForms. I've used them with great success for single and multi threading apps and you don't have to worry about handles and stuff like that
Here are some posts about NUnitForms worth reading
NUnitForms and failed DragDrop registration - problem of MTA vs STA
Compiled application exe GUI testing with NUnitForms
I finally found a solution to communicate between the testing-application and the application-under-test: Managed Spy. It's basically a .NET application build on top of ManagedSpyLib.
ManagedSpyLib allows programmatic access to the Windows Forms controls of another process. For this it uses Window Hooks and memory-mapping files.
Thanks for all who helped me to get to this solution!
Managed Spy does not provide a solution for compact framework applications.
The company Jamo Solutions (www.jamosolutions.com) meets the requirements for automation testing on mobile devices, including .net compact framework applications.