Web Apps Performance Testing

Here are some of the tools that can be used to do web application performance testing;

WebLOAD
LoadNinja
HeadSpin
ReadyAPI Performance
LoadView
PFLB
Keysight’s Eggplant
Apache JMeter
LoadRunner
Rational Performance Tester
NeoLoad
LoadComplete
WAPT
Loadster
k6
Testing Anywhere
Appvance
StormForge

What about Databases?

SQL queries in SSMS runs faster but they are slower in .NET application. One of the reason could be ARTHIABORT setting, read article below;

https://blog.sqlauthority.com/2018/08/07/sql-server-setting-arithabort-on-for-all-connecting-net-applications/

References

https://liferay.dev/blogs/-/blogs/session-storage-is-evil

Arrow function in JavaScript

There’s an alternative way of writing anonymous functions, which we call an arrow function. An arrow function uses () => instead of function ():

function using function ();

document.querySelector("html").addEventListener("click", function () {
  alert("Ouch! Stop poking me!");
});

function using arrow function;

document.querySelector("html").addEventListener("click", () => {
  alert("Ouch! Stop poking me!");
});

Reference

https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics

PowerShell and CLI command pattern

There is a pattern to PowerShell and CLI commands.

Predictable CLI commands
(always start with az vm and a verb)
az vm list
az vm create
az vm delete

for keyvalut, same pattern
az keyvault list
az keyvault create
az keyvault delete

for network, sub category is vnet, same pattern
az network vnet list
az network vnet create
az network vnet delete

for network, sub category is vnet, sub category is subnet same pattern
az network vnet subnet list
az network vnet subnet create
az network vnet subnet delete

Predictable Powershell commands
They are similar to CLI with some changes; (here verb is the first part of the word)
Get-AzVM
New-AzVM
Remove-AzVM

for keyvalut, same pattern
Get-AzKeyvault
New-AzKeyvault
Remove-AzKeyvault

for network, sub category is vnet, same pattern
Get-AzVirtualNetowrk
New-AzVirtualNetwork
Remove-AzVirtualNetwork

CLI has a spacing structure but PowerShell is all one word with hyphen in it.

View all install AZ modules

Get-InstalledModule -Name AZ -AllVersions | Select-Object -Property Name, Version

Update AZ modules to latest
Install-Module -Name AZ -AllowClobber -Force

Connection to Azure

Connect-AzAccount
Set-AzContext (switch to another subscription)
To override which subscription Connect-AzAccount selects by default, use Update-AzConfig -DefaultSubscriptionForLogin 00000000-0000-0000-0000-000000000000

Switching subscriptions
These can be run after getting authenticated from browser;

Get-AzSubscription
returns subscription info
$context = Get-AzSubscription -Subscription {subscription id listed in Get-AzSubscription cmdlet)
Set-AzContext $context
(by doing this, we are telling azure that we will be using this subscription in this session)

Some random commands for testing

Get-AzWebApp
Get-AzVM
return all virtual machines on my subscription, az vm list (equv. bash command)

Change visible status based on if array is empty or not in knockout.js

I want to be able to have a table show only if there are items in an array.

JS

var view_model = {
    lines: ko.observableArray([
        {
        content: 'one'},
    {
        content: 'two'},
    {
        content: 'three'},
    {
        content: 'four'},
        ]),
    remove: function(data) {
        view_model.lines.remove(data);
    }
};

ko.applyBindings(view_model);

HTML

<span data-bind="visible:lines">Lines Exist</span> 
<ul data-bind='foreach:lines'>
    <li>
        <button data-bind="click:$parent.remove">
            Remove
        </button>
        <span data-bind="text:content"></span>
    </li>
</ul>

Here is one solution;

<span data-bind="visible:lines">Lines Exist</span> 
<!-- ko if: lines().length > 0-->
<p>Here is my table</p>
<ul data-bind='foreach:lines'>
    <li>
        <button data-bind="click:$parent.remove">
            Remove
        </button>
        <span data-bind="text:content"></span>
    </li>
</ul>
<!-- /ko -->​

Refer to Stackoverflow

Knockout debugging

There are chrome extension available but we can use a very basic statement;

console.log("View model: " + ko.toJSON(dataVM));

If we are dealing with array then;

console.log(dataVM()[0]);

If we want to unwrap a view model then (make sure you have created the view model with ko.mapping.fromJS method;

var dataVMUnwrap = ko.mapping.toJS(dataVM);
//convert view model back to js
console.log(JSON.stringify(dataVMUnwrap));