Thursday, October 15, 2015

State of mind .....

You see I get attracted/lured to one or more things as my dream or aim with each passing day. I still consider myself to be much stable than many confused brains I have seen around me and I also consider myself to be in a much better position than those who are just earning their monthly salary and don’t consider that some extra efforts can change their life drastically. I am at least a person who has dreams and aims for himself in his life. (My good friend whom I always send the write up before posting on my blog gave his honest comments over here : don’t compare my life with others, you never know who feels happy in which state).  But I am believer of a quote from great Dr. A.P.J Abdul Kalam : “Dream, Dream Dream, Dreams transform into thoughts and thoughts result in action.”

But  currently I am doing nothing great in my job, it may be very good for my parents, my relatives and also for some of my non-earning friends but when I see the herd of engineers passing every year and joining IT and doing the same stuff, it comes to my mind where do I stand differently from them. I know what I am doing, if a class 12th student is trained for few months in that technology he/she can also do that and may be at a lesser salary than what I am earning. I was a good student in school may be not the best but I was good because I was not just good in numbers but I was always active in current affairs, taking responsibilities of events in school,  good speaker, humorous, my friends liked me and I was always in the bracket of decision makers and planner. Teachers also liked me not just for numbers but for my activeness in class and other things also but still I was not the best and intermediate school days dream of getting into prestigious engineering institutes of my country remained unfulfilled.  Also at that time engineering was the only field that I knew which attracted me, I never wanted to be a doctor as I didn’t had the love or passion for the profession. My father is a Bank officer but that profession again never attracted me. The only profession which somewhat attracted me was becoming an Architect and as I grew up and came to know what actually engineering is and also the boom I saw IT engineering is having finally gave me my that time dream “to become an engineer” but I failed to enter engineering college of my dream.

Still I did engineering  from a private engineering and slowly living with the hostellers I forgot the dream of getting into IITs. Students in hostellers used to say how come you didn’t make into IITs or NITs , you seem to be good in studies and intelligent as I used to help them in engineering subjects  they didn’t understand. Again teachers in class started liking and believing in me that I am a good brain but I didn’t perform well every time. Sometimes I did but mostly I didn’t and slowly over the years I converted into a just another engineering student with no dreams other than getting a good job after college.

But the dreamer in me woke up in final year of engineering when I wanted to generate electricity from daily articles we see(moving bus, fans, coolers etc.) and I started working on it. I gave lot of my time in it, studied learnt discussed with everyone. My friends joked, made fun and sometimes discussed properly but my college lacked the environment of experiments and research(if I would have been in IIT or NIT, I may had done something there..may be). Then came the campus placements time and our college called some aptitude preparation teams and in that also I fared very well and the notion of me getting a job was unanimous  among everyone. I even cleared Army and Airforce papers and went for SSB also but I got rejected in Conference round, may be because I was not having Armed officer dream in me whereas those who got selected had. Back in college companies came and went but I didn’t got selected. My both roommates got job but I didn’t and I started searching of other options as by the end of engineering , I was converted into just another private college engineer who was concerned only about passing exams and at the end of college getting a job. So question of trying for masters in engineering was out of the context. I started trying for job interviews and finally took admission to a short term specialisation course to get job after that.

I came to Pune with still the same smart intelligent mind who was already converted into another common engineer ,no skills and no exact dream which I want to accomplish. For me the important aim at that time was getting a job and start earning. This condition was also created because of the family background I had come from, I am not millionaire’s son who doesn’t have to care about money . It was important for me to start earning and I didn’t had much time. I gave my complete time to my studies and after completion of course I got good job in Pune only. That was quite a satisfactory thing for me because now I don’t have to bother my parents for my expenses and even I could take care of them from my salary. But as time went past and stability came into my life the bug of accomplishing dreams (which were not just one or two) started biting me.

My father used to tell me how share market makes people earn millions and billions and how big economies and businesses are.  Computers  in my life told me how big Bill Gates and Steve jobs are.

As I grew up other things also started luring me, I sing bollywood songs with keen interest and on my friends demand used to sing in college and outside and many have said that I have a good voice which makes me think quite a few time to give a singing competition audition and become a singer.

I used to conduct seminars and presentations in college and office and everybody said and says that my way of presentation and explaining things is nice which makes me dream of becoming TV anchor or something related to it like do an MBA and be a part of some big company’s executive members.

Apart from this, desires like having a toned 6 pack abs body, travelling the world, having big houses, cars etc  got associated with dreams. One of my good school friend always used to say “Necessity is the mother of invention” whenever we used to discuss about some idea and many a times I had discussed with him and later on with my other friends about ideas that come to my mind.  He and later my other friends used to praise my idea and we started researching on it that we should make/develop something on it but we never did, because someone had already done that and enjoying royalties or we were so slow in execution that some big company came into market with that idea before we even started.

Then came the concept of seed funding, venture capitalist, apps, utility apps, service based apps all kinds of apps in the mobile market and every tom dick and harry started making simple simple apps on some or the other idea and made huge amount of money.  (Tinder, Foodpanda, Bla Bla car, Ola, abc, xyz etc etc) where everything was to provide user a platform for booking  food, taxi, order groceries, do recharges and many other things. When only a few of my friends used to discuss about ideas, now every friend started discussing about it. The concept of getting investment in anyway from any app based on any idea that is not present in market right now started coming to my every friends’ mind. We discussed among us quite a few times about some app based idea, started working on it and then we forgot and again started to think about some idea and same process happened over the last one year.  In all this I lost my idea of having a dream and working on it without thinking about the consequences, amount of money I can generate etc. For me having a dream is a thought that you think can bring a change in daily life of yours and civilisation not just for some months or years but for decades. Computers –Bill Gates- Decades, Design/Product-Steve Jobs-Decades, Electricity-Scientists-Centuries. Stock Market-Warren Buffet-Decades, so for me the idea of having a dream was a big change revolution in civilisation not these apps which are now just a way to earn funds. Yes these apps are still a product and many have created revolution or brought change but these apps wouldn’t be available if we didn’t had mobile.

And recently after trying a bit for similar kind app to get some funds without exactly dreaming about it continuously, I came to this point that I have stopped dreaming big which I used to do.

I had many times thought about villages, farmers, agriculture since I have never lived in a village but since the last few years I am gaining knowledge in farming sector also and I am coming to the point that technological advancement has not helped the agriculture sector much and still in our country farmers do suicides because of the miserable life they are living. One person is having assets of 1 lakh crore and is not bothered about food, its price how it is produced and another person who is trying his best to produce for thousands so that he can feed his family at least once a day.

How a pregnant lady is taken care of by the whole family by feeding her with best food when she is going to give birth (produce) to a child whereas how badly farmers are living in our country who are giving birth (produce) to food which everyone wants to and needs to eat. I end my talk with this thought and urge everyone who reads this to stop wasting food because for millions its still a dream to have food everyday.!!

Friday, December 19, 2014

Encounter with CTS..!!

So finally coming back to my blog which was long due.

For a software professional like me and that too a bachelor living with his crazy friends in Pune, time is always on the fly. 24 hours seems like nothing for a day and interestingly this feeling remains throughout the year. But writing my thoughts is my happiness dose to myself, be it on nature, emotions, social cause, patriotism, hot issues, any idea or any technology. I have been writing up my thoughts ever since I was in my 9th standard, I am still novice in penning down my thoughts but that does not stop me from transforming my thoughts into my words. After writing previously on love, life and moral duties, this time I am writing on a technical topic for which I got inspiration, motivation and also some persuasion from one of my colleague.

CTS, no I am not referring here to Cognizant Technology Solutions, CTS is a small test suite containing around 99K test cases (latest Android L) to be verified on an Android device to make sure it is compatible to be sold to public. CTS – Compatibility Test Suite. I first came across this term around 2 years back while I was working on a project in my company. At that time my company was trying to make a similar project on a small scale that was specific to some devices which we were working upon in the project. I did some findings about CTS on internet but didn’t take it seriously then. One and a half years later CTS again came into my life and this time I had to take it seriously.

I gained the knowledge of it from my very special friend cum colleague for whom CTS executions was like a mania when he started working on it. I can tell you with all my personal experiences while working on CTS that it is hell to handle the failure cases until you become smart enough with its handling. My colleague somehow managed to make its execution understandable to me. Then I started reading about CTS on internet and I understood its importance. Even though it’s not necessary for one to execute and run CTS each and every day but it’s important for a software professional working in mobile domain company especially on Android Architecture to know what exactly CTS is and what exactly CTS does.

Android OS from Google is used by many device manufacturers all over the world for running their handsets, tablets etc. There are thousands of device based on Android OS that are sold in the market. It would be impossible for Google to verify the compatibility of each and every handset (running on Android) from different companies.  Without a strong compatibility standard, devices can vary so greatly that developers must design different versions of their applications for different devices. So Google came up with CTS, a testing tool which is free, open source and available for download. It is designed to be used for continuous self-testing during the device development process. Android devices will differ in hardware and software capabilities, so the compatibility program also provides the tools needed for distribution systems such as Google Play to implement appropriate filtering. This means users see only the applications they can actually run. The Android compatibility program makes it easy for mobile device manufacturers to develop compatible Android devices.

How does the CTS work?

The CTS is an automated testing harness that includes two major software components:

  • The CTS test harness runs on your desktop machine (linux machine) and manages test execution. 
  • Individual test cases are executed on attached mobile devices or on an emulator. The test cases are written in Java as JUnit tests and packaged as Android .apk files to run on the actual device target.

CTS setup and execution:
  1. Download CTS zip and CTS media files zip (Download CTS zip as per the version of Android device you are using)
  2. Attach a device or an emulator to the machine. Unzip the CTS zip and CTS media zip.
  3. There will be 4 folders after unzipping CTS zip namely docs, repository, resource and tools. Unzip CTS media zip and you will find CTS media files to be used while execution.
  4. Create a new sh file or edit the file present in CTS media zip to push each and every resolution media files into the device. (basically adb push all the media formats file into the device sdcard)
    For eg: adb push bbb_short/1920x1080 /mnt/sdcard/test/bbb_short/1920x1080
  5. Ensure adb is in system path.
  6. Now from terminal, adb install –r android-cts/repository/testcases/CtsDeviceAdmin.apk
    After that go to device -> Settings -> Security -> Device Administrators
    enable the two android.deviceadmin.cts.CtsDeviceAdminReceiver*
    Note: Make sure the android.deviceadmin.cts.CtsDeviceAdminDeactivatedReceiver stays disabled in the same menu.
  7. If the device has a memory card slot, make sure the device has an SD card plugged in and the card is empty.
  8. Set up your device with English (United States) as the language (Settings > Language & input > Language).
  9. Turn on the Location setting if there is a GPS or Wi-Fi / Cellular network available.
  10. Connect to a functioning Wi-Fi network.
  11. Make sure no lock pattern is set on the device (Settings > Security > Screen Lock 'None').
  12. Check the "USB Debugging" development option (Settings > Developer options > USB debugging).
  13. Connect the host machine that will be used to test the device, and “Allow USB debugging” for the computer’s RSA key fingerprint.
  14. Check Settings > Developer options > Stay Awake.
  15. Check Settings > Developer options > Allow mock locations.
Using the CTS:

The real encounter with the “MESS” the so called CTS will start from here.

Launch the CTS console by running the cts-tradefed script from the folder where the CTS package has been unzipped, e.g.

$ ./android­-cts/tools/cts­tradefed

For Android 5.0 CTS, java 7 or above is required.

After running the above command, one will enter into CTS tradefed. You may start default test plan i.e CTS.xml present in android-cts/repository/plans/CTS.xml using the command

cts-tf> run cts  --plan CTS

This command will run all packages present in CTS.xml. Individual package, class or even a method can be run separately.

cts-tf> run cts  --package
cts-tf> run cts  --class
cts-tf> run cts  --class –method testDownloadManager

While the test starts do not touch the device and keep it connected via usb to the machine. When all the test cases complete executing a final report in xml format will be generated. Test results are placed in a file and logs are also captured.

/android­-cts/repository/results/<start time>/testResult.xml
/androi­d-cts/repository/logs/<start time>

One can re-run any testcase failed or passed anytime to verify again with different set of conditions.

So this was an initial introduction about CTS and its setup and usage. While working on it, one comes around much informative stuff about Android OS, SEAndroid, Android APIs and many other things. For any detailed information about CTS go through the following links:

I would urge whosoever is interested especially those who are working on handsets/tablets development to setup CTS and run CTS at least once. Some points that I came to know with my experience of CTS
What is Tradefed?
Java version specific to CTS version.
Enforcing mode Permissive mode based on SE Android. Denials, audit logs, etc.