December 20, 2012

Property based testing for unit testers with PropEr – Part 1 «

Property based testing for unit testers with PropEr – Part 1 «: "Eric states his basic expectations as follows:

I can put arbitrary terms into the dictionary as keys
I can put arbitrary terms into the dictionary as values
When I put a value in the dictionary by a key, I can retrieve that same value
When I put a different value in the dictionary by key it does not change other key value pairs.
When I update a value the new value in available by the new key
When a value does not exist a not found exception is created"

'via Blog this'



%%% @author vlad 
%%% @copyright (C) 2012, vlad
%%% @doc
%%%
%%% @end
%%% Created : 17 Dec 2012 by vlad 

-module(erlware_tests).

-compile(export_all).

-ifdef(TEST).

-include_lib("proper/include/proper.hrl").
-include_lib("eunit/include/eunit.hrl").


%% --------------------------------------------------------------------------------
%% Erlware Dictionary
%% --------------------------------------------------------------------------------

%% I can put arbitrary terms into the dictionary as keys
key() -> nat().
    %union([integer(), atom()]).

%% I can put arbitrary terms into the dictionary as values
value() -> nat(). %union([integer(), atom(), binary(), boolean(), string()]).


sym_dict() ->
    ?SIZED(Size,sym_dict(Size)).

sym_dict(0) ->
    {'$call', ec_dictionary, new, [ec_gb_trees]};
sym_dict(Size) ->
    ?LAZY(frequency([
       {1, {'$call', ec_dictionary, remove, [key(), sym_dict(Size - 1)]}},
       {2, {'$call', ec_dictionary, add, [value(), value(), sym_dict(Size - 1)]}}
      ])).

%% Is it realy work?
%% proper_gen:sample(erlware_tests:value()).
%% proper_gen:sample(erlware_tests:key()).
%% proper_gen:sample(erlware_tests:sym_dict()).
%% {ok,D} = proper_gen:pick(erlware_tests:sym_dict(),10).

%% When I put a value in the dictionary by a key, I can retrieve that same value
prop_get_after_add() ->
    ?FORALL({Dict,K,V}, {sym_dict(), key(), value()},
            V =:= ec_dictionary:get(K, ec_dictionary:add(K, V, Dict))
           ).

%% When I put a different value in the dictionary by key it does not change other key value pairs.
prop_add_twice_get_first() ->
    ?FORALL({Dict,K1,V1,K2,V2}, {sym_dict(), key(), value(), key(), value()},
            ?IMPLIES(K1 /= K2,
                     V1 =:= ec_dictionary:get(K1,
                                              ec_dictionary:add(K2, V2,
                                                                ec_dictionary:add(K1, V1, Dict))) 
                    )).

%% When I update a value the new value in available by the new key
prop_update_the_value() ->
    ?FORALL({Dict,K,V1,V2}, {sym_dict(), key(), value(), value()},
                V2 =:= ec_dictionary:get(K,
                                         ec_dictionary:add(K, V2,
                                                           ec_dictionary:add(K, V1, Dict)))
           ).

%% When a value does not exist a not found exception is created
does_not_exist_exception_test() ->
    ?assertThrow(not_found, ec_dictionary:get(42, ec_dictionary:new(ec_gb_trees))). 


-endif. % (TEST).

July 14, 2012

Flow-based programming - Wikipedia, the free encyclopedia

Flow-based programming - Wikipedia, the free encyclopedia:

'via Blog this'

First impression FBP made on me while playing with Lego edition of LabView. I still prefer CPS actor based style to program robots but I found that most of protocol handling can be nicely decomposed in FBP.



This is Umlet (http://www.umlet.com/) palette which you can copy to ../Umlet/palettes/FBP.uxf and use it for your own design.


  8
  
    com.umlet.element.custom.State
    
      8
      24
      104
      64
    
    READ
--
Read
  Masters

    
  
  
    com.umlet.element.Relation
    
      88
      40
      136
      64
    
    lt=->
m1=OUT
m2=IN[0]

    24;24;56;24;56;48;120;48
  
  
    com.umlet.element.custom.State
    
      208
      72
      104
      56
    
    COLLATE
--
Collate
    
  
  
    com.umlet.element.custom.State
    
      8
      112
      104
      64
    
    READ
--
Read
  Details

    
  
  
    com.umlet.element.Relation
    
      88
      88
      136
      72
    
    lt=->
m1=OUT
m2=IN[1]

    24;56;56;56;56;24;120;24
  
  
    com.umlet.element.custom.State
    
      200
      224
      112
      64
    
    PROC
--
Process
 Merged Streams
    
  
  
    com.umlet.element.Relation
    
      232
      104
      40
      136
    
    lt=->
m1=OUT
m2=IN

    24;24;24;120
  
  
    com.umlet.element.custom.State
    
      8
      192
      104
      64
    
    WRITE
--
Write
  New Masters

    
  
  
    com.umlet.element.custom.State
    
      8
      272
      104
      64
    
    REPORT
--
Summary 
 & Errors

    
  
  
    com.umlet.element.Relation
    
      88
      200
      128
      64
    
    lt=->
m1=OUTM
m2=IN

    112;48;88;48;88;24;24;24
  
  
    com.umlet.element.Relation
    
      88
      240
      128
      72
    
    lt=->
m1=OUTSE
m2=IN

    112;24;88;24;88;56;24;56
  



July 6, 2012

Using xrandr and gtf to add a new mode to your X configuration at runtime | arunviswanathan.com

Using xrandr and gtf to add a new mode to your X configuration at runtime | arunviswanathan.com:

'via Blog this'

In case if xrand reports:


DP3 connected 1920x1080+1680+0 (normal left inverted right x axis y axis) 477mm x 268mm
   1920x1080      60.0 +
   1680x1050      60.0

but monitor can not detect signal it is worst to try subj solution.

In my case HP EliteBook -> DP -> Benq BL2400 could not accept  '1920x1080      60.0' but
was convinced via:



xrandr --output LVDS1 --off
xrandr --newmode "1920x1080_59.90"  172.51  1920 2040 2248 2576  1080 1081 1084 1118  -HSync +Vsync
xrandr --addmode DP3 1920x1080_59.90
xrandr --output DP3 --mode 1920x1080_59.90 --rotate normal --output VGA1 --auto --rotate normal --left-of DP3 --pos 0x0



July 5, 2012

GIT tuning from under firewall

This summary is not available. Please click here to view the post.

February 2, 2012

The Linux Kernel Makefile.in

OpenSS7, one of my favorite projects, succeed to make fully blown LKM compilation.

After some experiments fail miserable...
My KISS style LKM inside Atoconf based on faking Makefile.in




OpenSS7 macro to find kernel

# =========================================================================
# _LINUX_KERNEL
# -------------------------------------------------------------------------
# The linux kernel build directory is the build kernel tree root against which
# kernel modules will be compiled.
# -------------------------------------------------------------------------
AC_DEFUN([_LINUX_KERNEL], [dnl
AC_CACHE_CHECK([for kernel build directory], [linux_cv_kernel_build], [dnl
AC_MSG_RESULT([searching...])
AC_ARG_WITH([kernel-build],
AS_HELP_STRING([--with-kernel-build=DIR],
[specify the base kernel build directory in which configured
kernel source resides.]),
[with_kernel_build="$withval"],
[with_kernel_build=])
if test :"${with_kernel_build:-no}" != :no
then
linux_cv_kernel_build="$with_kernel_build"
fi
if test :"${linux_cv_kernel_build:-no}" = :no -o ! -d "$linux_cv_kernel_build"
then
if test :"${linux_cv_kernel_build:-no}" = :no
then
AC_MSG_ERROR([
***
*** This package does not support headless kernel build. Install the
*** appropriate built kernel-source and kernel-headers package for the
*** target kernel and then configure again.
***
*** The following directories do no exist in the build environment:
*** "$with_kernel_build"
***
*** ])
fi
fi
AC_MSG_CHECKING([for kernel build directory]) ])
kbuilddir="$linux_cv_kernel_build"
AC_SUBST([kbuilddir])dnl
])# LINUX_KERNEL





acinclude.in per module macro

# =============================================================================
# _MODEM_SETUP_MODULES
# -----------------------------------------------------------------------------
AC_DEFUN([_MODEM_SETUP_MODULES], [dnl
AC_ARG_ENABLE([module-lte-sched],
AS_HELP_STRING([--enable-module-lte-sched],
[enable module lte_sched for linkage with MODEM.
@<:@default=module@:>@]),
[enable_module_lte_sched="$enableval"],
[if test :${modem_big_compile:-yes} = :yes ; then enable_module_lte_sched='yes' ; else enable_module_lte_sched='module' ; fi])
AM_CONDITIONAL([CONFIG_MODEM_LTE_SCHED], [test :${modem_cv_module_lte_sched:-module} = :yes])
# -----------------------------------------------------------------------------

AC_CACHE_CHECK([for MODEM module lte_sched], [modem_cv_module_lte_sched], [dnl
modem_cv_module_lte_sched="${enable_module_lte_sched:-module}"
if test :$modem_cv_module_lte_sched = :module -a :${linux_cv_k_linkage:-loadable} = :linkable ; then
modem_cv_module_lte_sched='yes'
fi])
# -----------------------------------------------------------------------------
case ${modem_cv_module_lte_sched:-module} in
(yes)
AC_DEFINE_UNQUOTED([CONFIG_MODEM_LTE_SCHED], [1], [When defined,] AC_PACKAGE_TITLE [
will include the lte_sched module for linkage with MODEM. When undefined,]
AC_PACKAGE_TITLE [will not include the lte_sched module for linkage with MODEM.])
;;
(module)
AC_DEFINE_UNQUOTED([CONFIG_MODEM_LTE_SCHED_MODULE], [1], [When defined,]
AC_PACKAGE_TITLE [will include the lte_sched module as a standalone loadable kernel module. When
undefined,] AC_PACKAGE_TITLE [will not include the lte_sched module as a standalone loadable kernel
module.])
;;
esac
# -----------------------------------------------------------------------------
AM_CONDITIONAL([CONFIG_MODEM_LTE_SCHED], [test :${modem_cv_module_lte_sched:-module} = :yes])
AM_CONDITIONAL([CONFIG_MODEM_LTE_SCHED_MODULE], [test :${modem_cv_module_lte_sched:-module} = :module])
])# _MODEM_SETUP_MODULES






Fake Makefile.in


target_alias = @target_alias@
target_cpu = @target_cpu@
prefix = @prefix@

KERNEL_ROOT=@kbuilddir@
TARGETDIR=$(prefix)/firmware

ifneq ($(KERNELRELEASE),)
ifdef V
KBUILD_VERBOSE = $(V)
endif

EXTRA_CFLAGS += -I$(src)
EXTRA_CFLAGS +=

@CONFIG_LTE_SCHED_MODULE_TRUE@lte_sched.c: lte_sched.h
@CONFIG_LTE_SCHED_MODULE_TRUE@obj-m += lte_sched.o

#sched_csap-y := sched_csap.o

else

all: modules

modules:
echo "Making $@ in `pwd`"
ARCH=$(target_cpu) CROSS_COMPILE="$(target_alias)-" \
$(MAKE) V=1 -C $(KERNEL_ROOT) M=`pwd` modules

clean:
echo "Making $@ in `pwd`"
ARCH=$(target_cpu) CROSS_COMPILE="$(target_alias)-" \
$(MAKE) V=0 -C $(KERNEL_ROOT) M=`pwd` clean

install:
echo "Making $@ in `pwd`"
ARCH=$(target_cpu) CROSS_COMPILE="$(target_alias)-" \
$(MAKE) V=1 -C $(KERNEL_ROOT) M=`pwd` INSTALL_MOD_PATH=$(TARGETDIR) modules_install
endif

January 22, 2012

EmacsWiki: Fly Make for ATS

EmacsWiki: Fly Make:

'via Blog this'


Following is the ATS aka Applied Type System initialization code in Emacs lisp.





; ats
(defun flymake-ats-init ()
(let* ((temp-file (flymake-init-create-temp-buffer-copy
'flymake-create-temp-inplace))
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
(list "atscc" (list "-tc " local-file))))

(add-to-list 'flymake-allowed-file-name-masks
'("\\.\\(d\\|s\\)ats\\'" flymake-ats-init))
(push
'("\\(syntax error: \\)?\\([^\n:]*\\): \\[?[0-9]*(line=\\([0-9]*\\), offs=\\([0-9]*\\))\\]?\\(.*\\)?"
2 3 4 5) flymake-err-line-patterns)

January 5, 2012

LOAD K MODULE SYMBOL TABLE INTO DEBUGGER

Hi,


scd /sys/module/chra read write/sections
cat .bss .data .text
0xf8e1e830
0xf8e1e6f4
0xf8e1e000
(gdb) add-symbol-file /home/nkhare/Training/LinuxKernel/oops/char-dev-read-write-oop/char-read-write.ko 0xf8e1e000 -s .data 0xf8e1e6f4 -s .bss 0xf8e1e830
add symbol table from file "/home/nkhare/Training/LinuxKernel/oops/char-dev-read-write-oop/char-read-write.ko" at
.text_addr = 0xf8e1e000
.data_addr = 0xf8e1e6f4
.bss_addr = 0xf8e1e830
(y or n) y
Reading symbols from /home/nkhare/Training/LinuxKernel/oops/char-dev-read-write-oop/char-read-write.ko...done.
(gdb) p mycdrv1_read
\$1 = {ssize_t (struct file *, char *, size_t, loff_t *)} 0xf8e1e000
(gdb) list mycdrv1_read

January 4, 2012

Versatile Platform Baseboards - QEMU

Versatile Platform Baseboards - ARM:

'via Blog this'

Hi,




1. NETWORK
sudo tunctl -u $USER -t tap1
ifconfig tap1 192.168.0.1
sudo /usr/sbin/dhcpd -d -cf ./dhcp.conf tap1

default-lease-time 6000;
max-lease-time 72000;
option domain-name-servers 192.168.0.1;
option routers 192.168.0.1;
server-name "192.168.0.1";
ddns-update-style none;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.254;
}


2. UML
pkill -SIGUSR1 -o linux-2.6.24-rc7
./kernel32-3.1.5 ubda=./Debian-Squeeze-x86-root_fs
eth0=tuntap,tap1,fe:f0:00:00:00:01,192.168.1.254 con0=fd:0,fd:1

3. QEMU
u-boot-2010.09/

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- versatilepb_config
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-

qemu-system-arm -M versatilepb -nographic -kernel u-boot
qemu-system-arm -M versatilepb -nographic -kernel u-boot -s -S

qemu-system-arm -kernel zImage.integrator -initrd arm_root.img -net nic -net tap,ifname=tap0,script=no

4. LINUX

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- versatile_defconfig -s
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage -s


qemu-system-arm -M versatilepb -nographic -kernel u-boot-2010.09/u-boot -net nic -net tap,ifname=tap1,script=no

5. U-BOOT

VersatilePB # sete ipaddr 192.168.0.2
VersatilePB # sete serverip 192.168.0.1
VersatilePB # sete bootfile linux-2.6.37.4.uImage
VersatilePB # tftpboot

$ dd if=/dev/zero of=flash.img bs=1M count=64
$ dd if=u-boot.bin of=flash.img conv=notrunc
$ qemu-system-arm -M versatilepb -nographic -pflash flash.img
VersatilePB # sete ipaddr 192.168.0.2
VersatilePB # sete serverip 192.168.0.1
VersatilePB # sete bootfile linux-2.6.37.4.uImage
VersatilePB # printenv

6. EVM
Linux T4000 2.6.37.4 #3 Fri Dec 23 13:54:46 EET 2011 armv5tejl GNU/Linux
T4000:~#

root=/dev/nfs rw nfsroot=135.243.22.64:/opt/rfs mem=256M earlycon=uart8250,mmio,0xfe090000,115200 console=ttyS0,115200n8 ip=135.243.22.59:::135.243.22.254:255.255.255.254::: hwaddress=eth1,00:02:F7:00:19:19 nol2x0 nopcie noswap

qemu-system-arm -M versatilepb -m 128M -kernel zImage -initrd rootfs -append "root=/dev/nfs rw nfsroot=135.243.22.63:/opt/rfs console=ttyAMA0 console=ttyS0 noswap ip=192.168.0.2::192.168.0.1:255.255.255.0:::" -nographic -net nic -net tap,ifname=tap1,script=no

7. HDA
qemu-system-arm -M versatilepb -cpu cortex-a8 -kernel ./vmlinuz -hda arm-rootfs.img -m 256 -append "root=/dev/sda mem=256M devtmpfs.mount=0 rw"

8. BB
qemu-system-arm -M versatilepb -m 128M -kernel zImage -initrd /udir/vkinzers/repos/openLRT/qemu/rootfs.bb.img -append "root=/dev/ram rdinit=/bin/sh console=ttyAMA0 console=ttyS0 ip=192.168.0.2::192.168.0.255:255.255.255.0:::" -nographic -net nic -net tap,ifname=tap1,script=no

tar xjvf busybox-1.19.3.tar.bz2
722 cd busybox-1.19.3/
723 make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- defconfig
724 make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig
725 make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- install
726 ls -R _install/
727 cd _install find . | cpio -o --format=newc > ../rootfs.bb.img